Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.socket

一、解决var/run/mysqld没有pid和sock文件

MySQL下mysql.sock丢失丢失的原因一般是因为配置文件不一致的原因,mysqld 错误启动,mysqld_safe 会清除一次mysql.sock 。解决方法是:

判断一般人解决故障时没有切换到mysql用户,造成权限有问题,无法创建mysql授权表,所以也就无法创建/tmp/mysql.sock 和hostname.pid文件。因此,总结解决方法如下:

#su mysql  // root 用户也是可以的

$/usr/local/bin/mysql_install_db     //到bin目录执行,重建授权表

$/usr/local/bin/mysqld_safe &     

mysql -uroot -p                //测试

mysq>bye;

$

文件已经解决,重新生成新的 /tmp/mysql.sock 和 hostname.pid

var/

$su root

二、解决mysql.sock文件路径不对

1.在/var/lib/mysql创建一个link:ln -s /var/lib/mysql/mysql.sock /path/to/mysql/mysql.sock

2.在root权限下修改my.cnf文件(/etc/mysql/my.cnf),指定正确的路径

3.1和2任选其一就可以

找不到sock常规情况应该是my.cnf配置没写对。另外也可能是权限问题。
1./var/lib/mysql 所有文件权限 改成mysql.mysql;
2.修改/etc/my.cnf文件;
[mysql d]
socket=/var/lib/mysql .sock
[mysql ]
socket=/tmp/mysql .sock
或者直接link:  
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
原文地址:https://www.cnblogs.com/weizaiyes/p/7612983.html