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 永久化。
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 管理,避免客戶端各自硬編碼。/tmp(臨時目錄易被清理、權限鬆散)。