用 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数据库可能会更好一些为避免一些不必要的麻烦哦。