用 Homebrew 安裝的 MySQL 5.7.12 莫名其妙就掛掉了,翻看系統日志,看到一堆這樣的提示:
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.
這樣的提示每10秒一次,從中午一直到現在。
MySQL 是使用 Homebrew 提供的 servies 子命令啟動的:
sudo brew service start mysql
這條命令做的事情比較簡單,大概是這樣:
cp /usr/local/opt/mysql/homebrew.mxcl.mysql.plist /Library/LaunchDaemons
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.mysql.plist
我在 在 Mac OS X 上安裝lighttpd 中做過介紹。
折騰了幾次之後,我又發現一條這樣的信息:
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.
這一下讓我找錯了方向,有人說這是因為 Apple suggest avoiding KeepAlive and RunAtLoad 導致的。我刪除了 homebrew.mxcl.mysql.plist 中的 KeepAlive 和 RunAtLoad ,當然是沒有什麼卵用。
接著看 /usr/local/var/mysql/{your-mac}.err ,我才發現真正問題所在:
2016-06-02T15:11:34.350795Z 0 [ERROR] InnoDB: The innodb_system data file ‘ibdata1’ must be writable
注意這個log文檔中的時間是格林威治時間。
原來是因為文件不可寫導致的。看看這個 err 文件的權限是 _mysql:admin ,於是將整個 /usr/local/var/mysql 文件夾和之下所有文件權限改為相同即可:
sudo chown -r _mysql:admin /usr/local/var/mysql
當然大家也可以不使用Homebrew了而直接安裝mysql數據庫可能會更好一些為避免一些不必要的麻煩哦。