码迷,mamicode.com
首页 > 数据库 > 详细

Can't connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘ (2)解决思路

时间:2016-03-06 23:46:05      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:mysql   解决   socket   error 2002   

首先说明一下mysql.sock文件的作用:

连接mysql有两种方式,第一种是TCP/IP,第二种就是直接使用unix domain socket,它比TCP/IP块。


mysql.sock是在mysql-server和client在同一服务器上时,发起本地连接时可用,而无需定义-h参数指定具体的IP。mysql.sock是随每次mysql server启动时生成,通常配置参数是将mysql.sock生成在/tmp/目录下。即在/etc/my.cnf文件中指定socket=/tmp/mysql.sock


因此如果出现的是ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘

(1) 首先确认配置参数是否正确,尝试重启mysql。

(2) 如果不成功,可以用

find / -name mysql.sock

定位文件在哪里。是不是socket被误放在其他地方,参考链接

(3) 会不会是权限设置问题,

chown -R mysql:mysql /var/lib/mysql

参考链接

(4) 或者...其他情况


但是注意看,这里我出现的问题是 ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘ (2)

排查:

(1)find / -name mysql.sock 看到mysql.sock在/tmp/路径下,/etc/my.cnf 的socket路径也是/tmp/mysql.sock;

(2) 用

ps -ef |grep mysql

看,似乎也没问题。

root       806     1  0  3月05 ?      00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/linpeisong-PC.pid


mysql     1233   806  0  3月05 ?      00:00:27 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/var/linpeisong-PC.err --pid-file=/usr/local/mysql/var/linpeisong-PC.pid --socket=/tmp/mysql.sock --port=3306


但是如果我们手动指定--socket参数,即

mysql --socket=/tmp/mysql.sock -uroot -ppassword

是可以正常连接的。


(3) 最后参考这篇文章找到根源:参考链接


因为mysql会按顺序读取配置文件/etc/my.conf,/etc/mysql/my.conf,/usr/etc/my.con,~/.my.conf,后面的会将前面的覆盖。而此时在我的/etc/mysql/my.conf文件中,配置的socket参数就是

socket = /var/run/mysqld/mysqld.sock

有一个做法可以创建链接文件解决,如

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

但是用这种方法后面可能会遇到php又找不到mysql.sock的问题。

因此直接将/etc/mysql/my.cnf重新命名

mv /etc/mysql/my.cnf /etc/mysql/my.cnf_backup

就可以利用默认/etc/my.cnf正常连接。


本文出自 “新手PS欢迎交流” 博客,请务必保留此出处http://linpeisong.blog.51cto.com/9601554/1748198

Can't connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘ (2)解决思路

标签:mysql   解决   socket   error 2002   

原文地址:http://linpeisong.blog.51cto.com/9601554/1748198

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!