ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
環境:FreeBSD 4.10-RELEASE,嘗試以 root 登入 MySQL 失敗,mysql restart 同樣報錯。
/tmp/mysql.sock。mysqld 與 mysqld_safe 進程仍在運行,佔用資源導致新啟動失敗。mysql.sock,重開機即可自動恢復。find / -name mysql.sock
# 無輸出,確認檔案確實遺失
mysql restart
# 仍報 ERROR 2002
ps -aux | grep mysql
# 找到 mysqld (PID 137) 與 mysqld_safe (PID 111)
kill 137
kill 111
因 Socket 為暫存檔,重開機後 /tmp 清空,MySQL 守護進程啟動時會自動重建 Socket。
reboot
# 10 秒後重新連線
mysql -u root -p
# 成功進入 MySQL monitor
mysql.sock 是 Unix Domain Socket,用於本地客戶端與 mysqld 通訊,預設放在 /tmp 或 /var/run/mysqld。mysqld_safe 會自動建立 Socket,重開機是最徹底的重建方式。mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqldmy.cnf 指定 socket=/var/run/mysqld/mysql.sock,再啟動服務。/tmp 目錄,避免系統定期清理導致連線中斷。my.cnf `[mysqld]` 區段明確設定 socket=/var/lib/mysql/mysql.sock(或其他持久化路徑)。systemctl restart mysqld 或官方啟動腳本管理服務,避免手動 kill 導致資源洩漏。mysql.sock 存在性,異常時告警並自動嘗試重啟服務。