奇宝库 > mysql数据库(没有mysql.sock文件)

mysql数据库(没有mysql.sock文件)

我的是centos6.3 mysql5.1.57,重启一次服务器后,用mysql -u root -p登录出现以下错误:

错误2002 (HY000):无法通过套接字'/tmp/mysql.sock' (2)连接到本地Mysql服务器

所以,我检查了mysql的状态:

/etc/rc.d/init.d/mysqld状态

停下来,不要跑。

/etc/rc.d/init.d/mysqld重新启动

停止mysqld: [好]

MySQL守护程序无法启动。

正在启动mysqld: [失败]

ps -ef | grep mysql

root 28221 27474 0 14:18 pts/0 00:00:00 grep MySQL只有这一个。

至此,我可以确定mysql无法启动。

我开始排查,首先发现/tmp/mysql.sock不存在。

vim /etc/my.cnf

socket=/var/lib/mysql/mysql。短袜

/var/lib/mysql/mysql。袜子也不存在。

find/-name mysql.sock

显示为空,没有找到mysql.sock文件,mysql.sock文件丢失。

我在网上看到有人说mysql.sock socket文件只要重启服务器就可以重新创建,

6初始化重启命令

重启后,错误还是一样,没有变化。mysql.sock重启服务器不会自动生成。

接下来我了解到mysql.sock是一个临时文件,在mysql启动的时候会自动生成。我的服务器没有启动,自然没有mysql.sock文件。

我尝试了安全引导模式,mysqld_safe尝试通过工作目录找到服务器和数据库,但是mysqld_safe还是失败了。

mysqld_safe

使用数据库启动mysqld守护程序./mysql/var

从pid文件停止服务器.pid

130802 15:17:11 mysqld结束

在各种命令都失败的时候,我开始了这次最大的收获——学习读取错误日志。

在错误日志中,启动失败的原因极其明显,文件’。/mysql-bin。' 000004 '找不到,打开失败!

Mysql开启了bin log功能,它的存在是为了检查数据库根目录下的文件。可能是文件权限问题。

chown -R mysql:mysql /./mysql/var

mysqld_safe

/etc/rc.d/init.d/mysqld重新启动

停止mysqld: [好]

正在启动mysqld:[好]

成功启动了!~

此时,mysql.sock文件出现在/var/lib/mysql/mysql.sock中,如下图所示,所有以“s”开头的文件都是socket文件。

mysql -u root -p

错误2002 (HY000):无法通过套接字'/tmp/mysql.sock' (2)连接到本地MySQL服务器

/tmp/mysql.sock

解决这个错误非常简单,因为/tmp/mysql.sock不存在。使用此方法:

ln -s /var/lib/mysql/mysql。sock /tmp/mysql。短袜

以“L”开头的文件是软链接文件。或者可以通过修改/etc/my.cnf文件来修复它。

成功解决了!~

就是这样一个困扰我这么久的问题,错误日志让它隐形了。查错误日志找出问题,而不是像我之前那样盲目找错。

俗话说,授人以鱼不如授人以渔。学会查日志,可以方便快捷的解决问题。

错误使人进步。我为这个错误纠结了四个多小时,对linux中“一切都是文件”这句话有了更深的理解。对我学习文件系统管理(目录树)帮助很大,把我的思路从windows操作系统转到了linux系统。并且最终解决问题,很有成就感。我喜欢这种感觉。

本文来自网络,不代表本站立场,转载请注明出处: