在 Red Hat 6 + MySQL 5.6 環境下執行 service mysql start 時報錯:
ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid)
檢查數據目錄 /var/lib/mysql 擁有者與權限:
ls -ld /var/lib/mysql # 正確輸出應為 mysql:mysql 且具備寫權限 drwxr-xr-x. mysql mysql ... /var/lib/mysql
若權限正確,繼續下一步。
ps -ef | grep mysql
發現已有 mysqld 進程運行,但 mysql.sock 未生成,說明進程處於異常狀態。
kill -9# 終止殘留進程 service mysql start # 重新啟動 ls /var/lib/mysql/mysql.sock # 驗證 socket 文件生成
直接原因:系統啟動時 MySQL 已自動啟動(chkconfig 配置),人為再次執行 service mysql start 導致進程衝突。
現象解釋:
service mysql stop 尋找的是服務管理器記錄的 PID,與實際進程不一致,顯示「找不到進程」chkconfig --list mysql # 輸出示例: # mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
級別含義:2/3/4/5 為多用戶模式(含圖形界面),預設開機自啟。
chkconfig --level 2345 mysql off
cat /var/log/boot.log | grep mysql
可確認開機階段 MySQL 是否已自動啟動。
| 版本 | 服務名 | 啟動命令 |
|---|---|---|
| MySQL 5.6 | mysql | service mysql start |
| MySQL 5.7+ | mysqld | service mysqld start |
ps -ef | grep mysql 確認進程狀態service 管理的 PID 與實際進程 PID 的映射關係chkconfig 配置,避免重複啟動本案例核心教訓:服務管理器狀態與實際進程狀態可能不一致,排查啟動失敗時優先檢查殘留進程而非權限。