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

7 篇文章 0 订阅

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

永久解决方式

  1. 直接重启mysql即可生成新的mysqld.sock文件,并更新信息,解决丢失的问题。
  2. 将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关闭而消失)。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值