首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 無法透過 mysql.sock 連線:三種快速修復方案

     編輯:MySQL 資料庫相關知識

錯誤訊息

Can't connect to local MySQL server through socket '/tmp/mysql.sock'

原因

PHP/MySQL 客戶端預設找 /tmp/mysql.sock,但實際 socket 位置因安裝方式不同(常見:/var/lib/mysql/mysql.sock、/var/run/mysqld/mysqld.sock)。

方案一:修正 my.cnf 統一 socket 路徑

[mysqld]
socket=/var/lib/mysql/mysql.sock

[client]
socket=/var/lib/mysql/mysql.sock

重啟 MySQL 後,客戶端自動讀取 [client] 區段設定。

方案二:建立符號連結(最快臨時修復)

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

重啟不生效(/tmp 會清空),建議配合 rc.local 或 systemd tmpfiles.d 永久化。

方案三:PHP 程式碼指定 socket

mysqli_connect('localhost', 'user', 'pass', 'db', 3306, '/var/lib/mysql/mysql.sock');
// 或 PDO
$dsn = "mysql:dbname=db;unix_socket=/var/lib/mysql/mysql.sock";

驗證指令

mysqladmin --socket=/var/lib/mysql/mysql.sock version
ls -l /var/lib/mysql/mysql.sock /tmp/mysql.sock

最佳實踐

  • 統一由 my.cnf 管理,避免客戶端各自硬編碼。
  • 生產環境避免將 socket 放在 /tmp(臨時目錄易被清理、權限鬆散)。
  • 多實例部署時,每實例獨立 socket,客戶端明確指定。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved