まとめ
-
/usr/local/var/mysql
の所有権が自分になってしまっていないか- なっていたら所有権を変える
- 消して入れ直しても所有権がおかしいのでhomebrewがおかしい状態?
発生した問題
homebrewで mysql: stable 5.7.10 をインストールしていましたが、気がついたらmysqlが起動しなくなっていました。
% mysql.server start
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/PCNAME.local.pid).
原因調査
/usr/local/var/mysql/PCNAME.local.errの最後のほうを見てみると、以下のようなエラーが出ていました。
2015-12-20T13:26:05.997337Z 0 [Note] InnoDB: Uses event mutexes
2015-12-20T13:26:05.997344Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2015-12-20T13:26:05.997350Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3
2015-12-20T13:26:05.997639Z 0 [Note] InnoDB: Number of pools: 1
2015-12-20T13:26:05.997808Z 0 [Note] InnoDB: Using CPU crc32 instructions
2015-12-20T13:26:06.085311Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2015-12-20T13:26:06.102112Z 0 [Note] InnoDB: Completed initialization of buffer pool
2015-12-20T13:26:06.119514Z 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
2015-12-20T13:26:06.119558Z 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
2015-12-20T13:26:06.119587Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2015-12-20T13:26:06.428463Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2015-12-20T13:26:06.428500Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2015-12-20T13:26:06.428511Z 0 [ERROR] Failed to initialize plugins.
2015-12-20T13:26:06.428517Z 0 [ERROR] Aborting
Errorとして、
The innodb_system data file 'ibdata1' must be writable
と出ていることから、対象のファイルのアクセス権が問題のようです。
解決方法
該当ファイルがある/usr/local/var/mysql/を確認したところ、
ほぼ全てのファイルの所有権が ログインユーザ:admin になっていたため、
sudo chown -R _mysql /usr/local/var/mysql
sudo chmod -R o+rwx /usr/local/var/mysql
を実行することで問題なく起動するようになりました。
補足
問題を解決する過程で一度mysqlをアンインストールし、
かつ/usr/local/var/msylq
をフォルダごと消して再インストールしたにも関わらず、このエラーが解決しなかったため、
もしかしたら今のhomebrewが設定する所有権がおかしい状態なのかもしれません。