[转帖]应对/tmp/mysqld.sock丢失问题

梦想与她 提交于 2020-03-01 07:43:52

应对/tmp/mysqld.sock丢失问题

https://blog.csdn.net/endzhi/article/details/86697460

 


Mysql有两种连接方式:
(1)TCP/IP
(2)socket
mysql.sock是创建与mysqld服务器相关的MySQL通信端点所使用的套接字,是随每一次 mysql server启动生成,默认权限srwxrwxrwx

Socket 链接方式 如以下2种方式
mysql -uroot -p123456 (无定义主机)
mysql -uroot -h localhost -p

mysql -uroot -p123456
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysqld.sock’

是你的mysql.sock 文件不存在了,可能被你删除了。常见是被手动或cron 清空了/tmp/目录。
连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。

临时解决方式
方法1
先通过find / -name mysql.sock查询真实位置,
即使用mysql -uroot -p123456 -S /mysql/mysqld.sock 可强制套接字文件进行登陆。

方法2
使用TCP链接方式

mysql -u user1 -h 127.0.0.1 -p123456

永久解决方式
直接重启mysql即可生成新的mysqld.sock文件,并更新信息,解决丢失的问题。
将mysqld.sock放mysql安装目录,减少/tmp被清空带来的风险。
修改my.cnf 中的
socket = /opt/mysql/mysqld.sock
重启mysql 服务,即可新的位置生成新的mysqld.sock

注意: 修改为非 /tmp/mysqld.sock 会遇到其他问题,而PHP标准配置正是通过’/tmp/mysql.sock’来连接数据库,
解决方式“创建软链接”

ln -s /opt/mysql/mysqld.sock /tmp/mysqld.sock

如果还报这丢失,可能由于MySQL压根没启动运行,(mysqld.sock随MySQL关闭而消失)。
————————————————
版权声明:本文为CSDN博主「endzhi」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/endzhi/article/details/86697460

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!