mysql -uroot -p123456
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/data/mysqldata/mysql.sock' (111)
ps -ef | grep mysqld 或 netstat -ntlp | grep 3306grep socket /etc/my.cnf、mysqladmin variables | grep socket、錯誤日誌 Version: ... socket: '/tmp/mysql.sock'
# /etc/my.cnf
[client]
socket = /tmp/mysql.sock # 與 [mysqld] 區段一致
[mysqld]
socket = /tmp/mysql.sock
systemctl restart mysqld
mysql -uroot -p # 正常連線
# 客戶端找 /data/mysqldata/mysql.sock,實際在 /tmp/mysql.sock
rm -f /data/mysqldata/mysql.sock
ln -s /tmp/mysql.sock /data/mysqldata/mysql.sock
ls -l /data/mysqldata/mysql.sock
# lrwxrwxrwx 1 root root 15 Oct 11 14:00 /data/mysqldata/mysql.sock -> /tmp/mysql.sock
# 強制用 TCP 連線本機
mysql -uroot -p -h 127.0.0.1 --protocol=tcp
# 或
mysql -uroot -p -h 127.0.0.1 -P 3306
原理:-h localhost 預設用 Unix Socket;-h 127.0.0.1 強制用 TCP。
socket、port、datadir,my.cnf 需用 [mysqld] 或 !include 區分php.ini mysqli.default_socket / pdo_mysql.default_socket 指向正確路徑ERROR 2002 90% 是 Socket 路徑不一致。根治:my.cnf 統一 [client] 與 [mysqld] 的 socket 參數。臨時:軟連結或強制 TCP。多實例、PHP、容器環境需額外注意配置一致性。