问题描述:
使用MySQL -uroot -p登录出现找不到 /var/lib/mysql/mysql.sock问题。
可以用如下命令登录:mysql -p --socket=/tmp/mysql.sock
解决方法:
大多数mysql都是rpm方式安装的。它会自动寻找/var/lib/mysql/mysql.sock这个文件。
检查mysql.sock的位置。
通过/etc/my.cnf中的socket的字段。
如果socket如下所示:
socket=/tmp/mysql.sock
可以参考这篇文章
http://blog.csdn.net/u012346692/article/details/52329553
https://www.cnblogs.com/summer-cool/p/3959699.html
https://yq.aliyun.com/articles/45840
一般此时很多人要用#find查找,即 #find mysql.sock
结果是:
[root@mail ~]# find mysql.sock
find: `mysql.sock': No such file or directory
[root@mail ~]#
其实是输入的参数有问题!!!!
正确的应该是
MySQL中mysql.sock找不到的解决方法
链接MySQL时,报错:
cant connect to mysql server through socket '/tmp/mysql.sock'
本质上这个问题是mysql.sock在其他路径导致的。
有文章说可以通过修改my.cnf的socket路径,但个人尝试后发现,这样可能导致mysql的服务起不来。
笔者认为,还是用软连接比较安全,方法如下:
1、找到mysql.sock
使用 find / -name mysql.sock进行寻找。如果找不到,那么说明该socket可能不是这个名字。
因此,需要先找到my.cnf,输入:
find / -name my.cnf
vim //my.cnf
在里面找到该sock的名字。例如笔者的就是mysqld.sock.
然后通过 find 定位,找到sock的路径。
2、软链接
把sock软链接到目标路径。以笔者的问题为例,就是:
ln -s /run/mysqld/mysqld.sock /tmp/mysql.sock
Problem Solved !
Happy Coding ~