萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

Homebrew MySQL 在 macOS El Capitan 無法啟動:權限錯誤根因分析與修復

Homebrew 安裝的 MySQL 5.7.12 在 macOS El Capitan (10.11) 上頻繁啟動失敗,系統日誌反覆出現 Service only ran for 0 seconds。本文記錄從現象到根因的完整排查鏈路,核心原因是 ibdata1 文件權限異常。

現象還原

Jun  2 20:08:49 zrong-mbp com.apple.xpc.launchd[1] (homebrew.mxcl.mysql): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.
Jun  2 20:11:08 zrong-mbp com.apple.xpc.launchd[1] (homebrew.mxcl.mysql): This service is defined to be constantly running and is inherently inefficient.

launchd 每 10 秒拉起一次,MySQL 瞬間退出,陷入死循環。

誤區:被 KeepAlive/RunAtLoad 誤導

網上建議刪除 plist 中的 KeepAlive 和 RunAtLoad,實測無效。真正錯誤藏在 MySQL 自身錯誤日誌:

/usr/local/var/mysql/{hostname}.err
2016-06-02T15:11:34.350795Z 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable

關鍵線索:ibdata1 must be writable —— 系統表空間文件不可寫。

根因定位:文件所有權錯位

ls -la /usr/local/var/mysql/
# 發現 err 文件屬主為 _mysql:admin,但 ibdata1 等核心文件屬主異常

可能原因:手動操作、備份還原、系統升級導致權限重置。

一鍵修復

sudo chown -R _mysql:admin /usr/local/var/mysql
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.mysql.plist

遞歸修正整個數據目錄所有權,MySQL 進程以 _mysql 用戶運行,即可正常讀寫。

深度避坑建議

  • 避免 sudo 啟動:sudo brew services start mysql 會導致部分文件變為 root 擁有,後續非 root 啟動必失敗
  • 優先使用官方安裝包:Homebrew 版本更新激進,配置模板常變,生產/開發關鍵機器建議用官方 .dmg 安裝
  • 數據目錄分離:將 datadir 指向非 Homebrew 管理路徑(如 /data/mysql),避免升級覆蓋
  • 監控啟動腳本:編寫健康檢查腳本,檢測到 0 秒退出自動告警

權限問題看似微小,實則是資料庫啟動的生死線。養成「先看 error log,再改配置」的肌肉記憶,能省去無數彎路。

copyright © 萬盛學電腦網 all rights reserved