MYSQL/pid not foundもしくはpermission deniedの対応方法

f:id:AK474747:20190831004510p:plain

 

まいえすきゅーえるううううううううう

ぐぬぬぬぬぬお前のせいで今日1日を費やしたぞ。

ついさっきようやく解決したので備忘録を。お風呂に入りたいので早めに書きます。

原因

MYSQL@5.7をインストールしてsever.start後、MYSQL@5.6をインストールして動かそうとすると、MYSQL@5.7で使おうとしていたファイルを参照するらしい。

残っているファイルを消すことが必要になる。

経緯

ことの発端はどこかのタイミングでbrew updateをしてしまったらしく、MYSQL@8系のバージョンが入ってしまっていた。

それにより、railsでアプリケーションを立ち上げようとした時にエラーが起きてしまったので、ダウングレードしたり様々なことをやった結果、「PIDファイルがないエラー」と「権限がないエラー」の無限ループにはまり込んでしまった

現象

MYSQLサーバーを起動させようとするとエラー

$ mysql.server start

/usr/local/Cellar/mysql@5.6/5.6.43/bin/mysqld_safe: line 138: /usr/local/var/mysql/username.local.err: Permission denied
 ERROR! The server quit without updating PID file (/usr/local/var/mysql/username.local.pid).

どうやら一つは権限がない、もう一つはPIDファイルがないらしい。

とりあえず権限を付与。

$ sudo chmod 777 /usr/local/var/mysql

$ mysql.server start
 ERROR! The server quit without updating PID file (/usr/local/var/mysql/username.local.pid).

権限問題は消えた。

PIDファイルを作るディレクトリに移動して、touchコマンドでpidファイルを作成。

$ cd /usr/local/var/mysql

$ sudo touch prkrsignMacBookPro.local.pid

$ mysql.server start
 ERROR! The server quit without updating PID file (/usr/local/var/mysql/username.local.pid).

これでもダメ。 /usr/local/var/mysqlディレクトリのファイルリストを表示したが、pidファイルがなかった。

どうやら作られても消えてしまう?らしい。

そこでこの記事を発見。

https://qiita.com/furafura_nau/items/7d8f5370899df125d459

一度でも5.7を起動してしまうと、同じデータを使って5.6を起動すると次のようなエラーが出るようになります。

Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/ogin.local.pid).
mysqld等は動いていなかったので権限周りと思われますが、うまく解決できませんでした。
(バージョンによってディレクトリ構成が違っていたので、権限以外にも何か影響しているのかもしれません)

とのこと。

記事を参考に、

$ sudo rm -rf /usr/local/mysql
$ sudo rm -rf /Library/StartupItems/MYSQL
$ sudo rm -rf /Library/PreferencePanes/MySQL.prefPane
$ sudo rm -rf /Library/Receipts/mysql-.pkg
$ sudo rm -rf /usr/local/Cellar/mysql*
$ sudo rm -rf /usr/local/bin/mysql*
$ sudo rm -rf /usr/local/var/mysql*
$ sudo rm -rf /usr/local/etc/my.cnf
$ sudo rm -rf /usr/local/share/mysql*
$ sudo rm -rf /usr/local/opt/mysql*

<!--最後にver5.6をインストール。-->
<!--元々MYSQL@5.6が入っていて、アンインストールせずにそのままインストールしちゃいました。-->
$ brew install mysql@5.6

忘れずにPATHを通そう。

$ echo 'export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile
$ /usr/local/opt/mysql@5.6/bin/mysql.server start

Starting MySQL
. SUCCESS! 

これはドヤ顔。エラー解決に8時間かけたのにたまらずドヤ顔

記事を参考にMYSQLに入れることも確認しときます。いけました。

$ /usr/local/opt/mysql@5.6/bin/mysql -u root

とりあえず所感として。

MYSQLでエラーが出たら、原因はほぼ二つ。

「PIDがなくなっている」か「権限がない」。

touchを使ってPIDファイルを作成、もしくはchmodを使って権限の再設定をまず試してみるのがいいと思います。

それで改善しないなら潔く再インストールが多分手っ取り早いです。

再インストールの場合は上記のようにMYSQLが持ってるファイルを全部消して、MYSQL@5.6をインストール、パスの設定がいいんじゃないかなと思います。

@8だったり@5.7だったり、なかなかバージョン関係でいざこざ起きやすいようなので、初めに環境構築した時のバージョンを再インストールしなおすのがいいんじゃないかなと思います。