在 CentOS 等 Linux 伺服器環境中,MySQL 服務無法啟動並報錯 MySQL Daemon failed to start 是常見的運維難題。本文記錄一次實際故障的完整排查過程,幫助你快速定位並解決問題。
網站突然無法連接資料庫,重啟伺服器後嘗試啟動 MySQL 服務:
# /etc/init.d/mysqld start
MySQL Daemon failed to start.
Starting mysqld: [FAILED]
首先檢查 /var/log/mysqld.log,關鍵錯誤如下:
/usr/libexec/mysqld: Can't change dir to '/xxx' (Errcode: 13)
[ERROR] Aborting
錯誤代碼 Errcode: 13 代表權限被拒絕,但檢查資料目錄與日誌目錄的擁有者、權限均正常。
執行 getenforce 發現輸出為 Enforcing,說明 SELinux 正處於強制模式,這很可能是導致 MySQL 無法切換目錄的根本原因。
# setenforce 0
編輯 /etc/selinux/config,將 SELINUX=enforcing 改為 SELINUX=disabled,然後重啟伺服器。
setsebool ftpd_disable_trans 1
關閉 SELinux 後重新啟動 MySQL,服務應能正常啟動。生產環境建議採用 方法二 永久關閉,或配置 SELinux 策略允許 MySQL 存取特定目錄,兼顧安全與可用性。