Homebrew 安装的 MySQL 在 EI Capitan 上无法启动

用 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 子命令启动的:

1sudo brew services start mysql

这条命令做的事情比较简单,大概是这样:

1cp /usr/local/opt/mysql/homebrew.mxcl.mysql.plist /Library/LaunchDaemons
2sudo 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 文件夹和之下所有文件权限改为相同即可:

1sudo chown -r _mysql:admin /usr/local/var/mysql

(全文完)