ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
/etc/init.d/mysqld status → stopped
/etc/init.d/mysqld restart → Starting mysqld: [FAILED]
find / -name mysql.sock 空結果,確認 Socket 檔不存在。
/var/log/mysqld.log (或 datadir/hostname.err) 顯示:
130802 15:17:11 [ERROR] File './mysql-bin.000004' not found (Errcode: 13)
130802 15:17:11 [ERROR] Failed to open log file
真兇: Binlog 檔案權限錯誤 (Errcode 13 = Permission denied),導致 MySQL 拒絕啟動,自然也就不會建立 Socket 檔。
chown -R mysql:mysql /var/lib/mysql (路徑依實際 datadir 調整)mysqld_safe & → 觀察無錯誤退出/etc/init.d/mysqld restart → [OK]啟動成功後 Socket 實際在 /var/lib/mysql/mysql.sock,但客戶端預設找 /tmp/mysql.sock。兩種修法:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
[client]
socket = /var/lib/mysql/mysql.sock
[mysqld]
socket = /var/lib/mysql/mysql.sock
「授人以魚不如授人以漁」—— MySQL 不啟動,第一動作永遠是看錯誤日誌,而非盲目重啟、刪檔、改配置。日誌直指根因 (權限、Binlog、InnoDB 恢復、磁碟滿),分分鐘定位,避免四小時瞎折騰。
datadir 權限擁有者 (mysql:mysql、750/640)log-bin 目錄同權限tmpdir 空間、權限/var/log/audit/audit.log)df -i, df -h)