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

解決 MySQL 啟動報錯「The server quit without updating PID file」完整排查指南

     編輯:MySQL 資料庫相關知識

故障現象

在 Red Hat 6 + MySQL 5.6 環境下執行 service mysql start 時報錯:

ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid)

核心排查步驟

1. 排除權限問題

檢查數據目錄 /var/lib/mysql 擁有者與權限:

ls -ld /var/lib/mysql
# 正確輸出應為 mysql:mysql 且具備寫權限
drwxr-xr-x. mysql mysql ... /var/lib/mysql

若權限正確,繼續下一步。

2. 檢查殘留進程(關鍵突破口)

ps -ef | grep mysql

發現已有 mysqld 進程運行,但 mysql.sock 未生成,說明進程處於異常狀態。

3. 強制清理並重啟

kill -9           # 終止殘留進程
service mysql start      # 重新啟動
ls /var/lib/mysql/mysql.sock  # 驗證 socket 文件生成

根因深度分析

直接原因:系統啟動時 MySQL 已自動啟動(chkconfig 配置),人為再次執行 service mysql start 導致進程衝突。

現象解釋:

  • 首次啟動成功,PID 文件寫入
  • 二次啟動嘗試寫入同一 PID 文件失敗,進程退出
  • service mysql stop 尋找的是服務管理器記錄的 PID,與實際進程不一致,顯示「找不到進程」

系統服務自啟動管理

1. 查看運行級別配置

chkconfig --list mysql
# 輸出示例:
# mysql  0:off  1:off  2:on  3:on  4:on  5:on  6:off

級別含義:2/3/4/5 為多用戶模式(含圖形界面),預設開機自啟。

2. 關閉自啟動(如需手動控制)

chkconfig --level 2345 mysql off

3. 查看啟動日誌

cat /var/log/boot.log | grep mysql

可確認開機階段 MySQL 是否已自動啟動。

版本差異提示

版本服務名啟動命令
MySQL 5.6mysqlservice mysql start
MySQL 5.7+mysqldservice mysqld start

避坑指南

  1. 操作前先 ps -ef | grep mysql 確認進程狀態
  2. 理解 service 管理的 PID 與實際進程 PID 的映射關係
  3. 生產環境變更前檢查 chkconfig 配置,避免重複啟動
  4. MySQL 5.7+ 默認不自啟,升級遷移時需注意行為差異

本案例核心教訓:服務管理器狀態與實際進程狀態可能不一致,排查啟動失敗時優先檢查殘留進程而非權限。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved