mysqlが起動できなくなって試行錯誤の末に再インストールした話

MySQLが起動できなくなってから、再インストールして起動するまで。

MySQLが起動しない。

mysql.server startをしても、
ERROR! The server quit without updating PID file (/usr/local/var/mysql/XXX.local.pid).
と表示され、起動しなかった。

brewを使った再インストールでは直らない。

brew uninstall mysql && brew install mysqlや、再インストール前にMacOSの再起動を試みてもダメだった。




ログファイルは

$ tail -f /usr/local/var/mysql/WatanabeNaokis-MacBook-Pro.local.err 

で確認。ファイル名はパソコン名.local.errになっていた。

.errを見ると、

2018-06-06T03:32:09.971759Z 0 [Warning] Failed to open optimizer cost constant tables

2018-06-06T03:32:09.971974Z 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist

2018-06-06T03:32:09.972239Z 0 [ERROR] Aborting

調べると、mysqld --initializeが動くようになるらしい。しかし、

[ERROR]--initialize specified but the data directory has files in it. Aborting. 

data directoryが空ではないからmysqlが初期化できないらしい。以前、.sqlファイルでrestoreしたときの記録が残っているようだ。

socketファイルを作っても解決せず。

最初に、調べたら、空のmysql.sockファイルを作って解決した記事があったが、試しても解決しなかった。
https://qiita.com/PoohSunny/items/4df890dde4879c2cd29b

権限問題では解決せず

よく権限問題で解決した報告がstackoverflowやブログに載っているが、これでは解決しなかった。
sudo chown -R _mysql:mysql /usr/local/var/mysql
https://stackoverflow.com/questions/9624774/after-mysql-install-via-brew-i-get-the-error-the-server-quit-without-updating

エラーファイルを削除しても解決せず。

cd /usr/local/var/mysql
sudo rm *.err && sudo rm *.pid
sudo reboot
sudo mysql.server start
参考リンクは上記URLと同じ。

MySQLファイルの全削除、そして再インストールして解決。

https://stackoverflow.com/questions/7459103/mysql-data-directory-location
を参考にして、brew uninstall mysqlでも消えなかったフォルダを消した。


rm -rf /usr/local/var/mysql


さらに、
https://community.jaspersoft.com/wiki/uninstall-mysql-mac-os-x
https://gist.github.com/vitorbritto/0555879fe4414d18569d

も参考にして、他のmysqlフォルダも消した。

brew uninstall mysql
再起動
brew install mysql
mysql.server start
で無事に起動した。

cnfファイルの場所

my.cnfの場所は
 mysql --verbose --help | grep my.cnf 
で確認できる。私の場合は次の通りであった。

/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

参考URL

https://qiita.com/_natsu_no_yuki_/items/ae4c94187093e4ab3cdc

今回の解決には5時間ほどかかってしまったが、consoleのエラーログで検索したりせず、またログファイル末尾のエラーメッセージで検索したりせず、最初からログファイルを注意深く見て大事なエラーメッセージを見つけていたら、自分の抱えている問題にspecificな解決方法がすぐに見つかったのかもしれない。

コメント

このブログの人気の投稿

株式会社GAIAの説明会で驚いた - パチンコホールの売上や給与 -

Python機械学習scikit-learn入門 SVMの学習とクロス・バリデーション (K-fold)