首页/数据/数据库速查/连接报错 socket 路径不一致

连接报错 socket 路径不一致

本地连接走 Unix socket 而非 TCP:socket 文件缺失、路径不符或权限不足都会报 2002;客户端与服务端必须指向同一个 socket 文件。

数据库速查数据更新于 2026-10-12
错误码ERROR 2002 (HY000)
含义socket 文件缺失/路径不符/权限不足
定位SHOW VARIABLES LIKE 'socket'

排查命令

排查命令
mysql -uroot -p -e "SHOW VARIABLES LIKE 'socket';"
ls -l /var/lib/mysql/mysql.sock /tmp/mysql.sock 2>/dev/null

修复与绕过

修复与绕过
mysql -h 127.0.0.1 -P 3306 -uroot -p          # 改走 TCP
mysql -uroot -p -S /var/lib/mysql/mysql.sock   # 显式指定 socket
# ~/.my.cnf
[client]
socket=/var/lib/mysql/mysql.sock
宝塔面板环境 socket 常在 /tmp/mysql.sock,源码编译常在数据目录下;迁移或容器化后路径最容易错位。

易错点

  • 服务重启后 socket 文件重建,长期脚本持有的连接会失效,需实现重连
  • SELinux 拦截也会报同类错误,记得查 audit.log

数据来源与参考

  • MySQL 8.0 Reference Manual: Can't connect to local MySQL server through socket

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌