LoginSignup
54
44

【MySQL】pid not foundもしくはpermission deniedの対応方法

Last updated at Posted at 2019-08-30

がっつりとハマってしまったので自分への備忘録として残します。

原因

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ファイルがなかった。

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

そこでこの記事を発見。

一度でも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だったり、なかなかバージョン関係でいざこざ起きやすいようなので、初めに環境構築した時のバージョンを再インストールしなおすのがいいんじゃないかなと思います。

54
44
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
54
44