mysql.sock文件丢失 SQLSTART[HY000][2002]错误

网站链接出错,报2002错误,SQLSTART[HY000] [2002] *
连接服务器,重启一下服务器,
使用-> mysql -u root -p 命令登陆是出现下面的错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
ls /tmp/mysql.sock

在/tmp/mysql.sock位置找不到所需要的mysql.sock文件,可能是由于my.cnf文件里对mysql.sock的位置设定导致。
linux下mysql.sock默认的是在/var/lib/mysql/, 查看[mysqld]下面加入mysql.sock的path的配置文件

之后,打开mysql的配置文件/etc/my.cnf

vim /etc/my.cnf(my.cnf也可能在其他路径下)

socket=/var/lib/mysql/mysql .sock    

查到上面这一行,看看mysql.sock文件是否存在

ls /var/lib/mysql/mysql.sock

MySQL下mysql.sock丢失的原因一般是因为配置文件不一致所致,这时你就要检查数据库连接文件了。
当mysqld 错误启动,mysqld_safe 会清除一次mysql.sock 。
总结解决方法如下:
1、/var/lib/mysql/mysql .sock消失不见  /tmp/mysql.sock存在

要保证使用的mysql用户具有对该目录的写权限,否则这样的改动由于权限限制仍然会报错。

为了避免权限问题也可以创建软链接,在/var/lib/mysql下创建一个link

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

2、/tmp/mysql.sock文件不见了

/tmp/mysql.sock是套接文字,在mysqld启动时自动生成,如果套接字文件被删除了,本地客户就不能连接。

网上有人说mysql.sock套接字文件可以简单地通过重启服务器重新创建得到它,

init 6      重启命令

重启后发现错误还是那样,没有任何改变,mysql.sock重启服务器未自动生成。
mysql.sock是一个临时文件,在mysql启动时会自动生成,我的服务器未成功启动,自然就没有mysql.sock文件。
我尝试安全启动模式,mysqld_safe试图通过工作目录找到服务器和数据库,但mysqld_safe还是失败。
冯奎博客
一般故障出现时没有切换到mysql用户,造成权限有问题,无法创建mysql授权表,所以也就无法创建/tmp/mysql.sock 和hostname.pid文件。所以要重新授权然后安全启动

/usr/local/bin/mysql_install_db     //重建授权表
/usr/local/bin/mysqld_safe &      //mysqld安全启动  
/service httpd restart                   //重启服务器
/etc/rc.d/init.d/mysqld  restart         //重启mysqld
 Stopping mysqld: \[ OK \]
 Starting mysqld: \[ OK\]

冯奎博客
mysqld重启成功,文件已经解决,重新生成新的 /tmp/mysql.sock 和 hostname.pid
切换到root用户,为/tmp/mysql.sock下文件/添加保护

$su root
#chmod +t /tmp/mysql.sock            //添加保护
mysql -u root -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

还报之前的错误,但是/tmp/mysql.sock文件是存在的,所以创建软连接就可以解决

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

然后重启服务器,这样mysql就可以正常使用了。

冯奎博客

   成功解决了!~

冯奎博客
请先登录后发表评论
  • latest comments
  • 总共0条评论