The server quit without updating PID fileの解決法をまとめた
タイトルのエラーはMySQLのサーバーを起動しようとした際に出ました。
mysql.server start ERROR! The server quit without updating PID file (/usr/local/var/mysql/[Macの名前].local.pid).
本記事は、上記エラーに対して色々調べたものを自分なりにまとめたものです。
本質的な原因は調べてきれていないのですが、解決法は先人の知恵からをお借りしていくつか拾えました。そこで、後学のためにもまとめておこうと思い立ったわけです。
ちなみに、どの解決法を用いてもサーバーが起動しなかったため、私が行ったゴリ押し解決法も併せて書いておきます。
全てを無に帰す方法であるため、当然のことながら非推奨ですが先人の知恵で解決しなかった方は役に立つかもしれません。
環境
別プロセスが稼働
psで動いているMySQLプロセスを検索して、killする
killコマンドで使っているPIDというのはプロセスIDのこと。psコマンドで出てくる数字の二列目の数字です。
ps ask | grep mysql kill -9 [PID]
ファイル・ディレクトリの所有者が不適切
各ファイル・ディレクトリに対して、chownを実行。
見るべき場所としては、/usr/local/var/mysql/以下のディレクトリ・ファイル。
mysql全体には_mysql。pidには、使用予定のユーザー名が良いようです。これ以外にも色々試してみましょう。
sudo chown -R _mysql:_mysql /usr/local/var/mysql sudo chown root /usr/local/var/mysql/[Macの名前].local.pid
理由がわからない
アンインストールし、再インストール。
上記の解決法を試したが、エラーが出る場合。DBが消える覚悟でMySQLやHomebrewを入れ直してみましょう。
それでもダメでしたか。私と同じですね。
再度、MySQLとHomebrewをアンインストールして、エラーに関わっているMySQLディレクトリを削除しましょう。
sudo rm -fr /usr/local/var/mysql/ sudo rm -fr /usr/local/Cellar/mysql/ sudo rm -fr ./usr/local/Cellar/mysql/
当然のことながら、この方法を適用するとこれまで保存していたDBのデータは消えます。私はMacのDBはテスト用にいじっていただけでしたので、良かったですが。
なぜエラーが発生したのか
消してはいけない(と思われる)テーブルまで消去したため。
事の発端
MySQL、前に少しだけ触ったなことあるけど全然勉強できてないから改めて勉強するか!
↓
よーし!この前作ったMySQLのdatabaseを整理するぞー!sys?performance_schema ?消しても大丈夫でしょ。dropdrop♪初期状態に戻すよー!
↓
あれ、サーバー開始できない。エラー出るぞ、なんでや(´・ω・`)
アホですね。
databasesは空白ではない
先ほど入れ直して作成したdatabaseを見ると整理しすぎていたようです。
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+
教訓
整理時のミスを減らすために、後から見てもわかりやすいtable名をつける。わからないなら消さない、整理のしすぎはアウト。
おすすめ書籍
おそらくこの記事を読んでくれてる方は初心者だと思うんだけど、こんな無駄な作業をするのではなく
「DBを使い捨てにすればいい!」
ってことでDockerの入門書をおすすめしておきます。
さいごに
次から同じ轍は踏まないはず。万が一踏んでもすぐに解決できるはず!
最後までお読みいただきありがとうございました。
参考にしたサイト MySQLが起動しないエラー(The server quit without updating PID file) | EasyRamble