LoginSignup
0
0

More than 1 year has passed since last update.

ある日MySQLが急に動かなくなった時のデバッグ( The server quit without updating PID file )

Posted at

はじめに

ある日突然、rails s でエラーが発生したので解決した方法を記録します。
誰かの参考になることを祈ります。

開発環境

  • macOS BigSur 11.6
  • zsh: 5.8 (x86_64-apple-darwin20.0)
  • Ruby: 2.6.3
  • Rails: 6.1.4.1

発生したエラー

localhost:3000: Access denied for user 'root'@'localhost' (using password: NO)

$ mysql.server start

#出力
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/*******.local.pid).

その後、brew doctor、アクセス権限の再付与、エラーログのファイルを覗いて対策したり小手先のデバッグを色々してみたが結局似たようなエラー。
前日まで元気に動いていたのに、、、(涙目)
ということで1度再インストールし直すのが良さげなので実践。

原因?

MySQLのバージョン切り替え時に出るエラーらしい。
バージョンは変更していないのでHomebrewのアップデートでMySQLまでバージョンが切り替わり、前のバージョンの使用したデータが残っていたためエラーが起こった???

対策(解決)

手順
- 現在のMySQL をアンインストール
- プロセスの削除
- 新しくMySQL をインストール
上記の通り進めていきます。

1. 現在のMySQL をアンインストール


brew uninstall mysql
brew uninstall --force mysql
brew cleanup -s mysql

#brew uninstall mysql では削除できないファイル群の削除
rm -rf /usr/local/mysql
rm -rf /Library/StartupItems/MYSQL
rm -rf /Library/PreferencePanes/MySQL.prefPane
rm -rf /Library/Receipts/mysql-.pkg
rm -rf /usr/local/Cellar/mysql*
rm -rf /usr/local/bin/mysql*
rm -rf /usr/local/var/mysql*
rm -rf /usr/local/etc/my.cnf
rm -rf /usr/local/share/mysql*
rm -rf /usr/local/opt/mysql

以下のコマンドで削除できているか確認します。

mysql --version
which mysql

消えてればOK。

2. プロセスの削除

削除したMySQLとバージョンの違うMySQLがインストールされたとき、もとのバージョンのプロセスが残っているとエラーが発生することがあるらしいので削除しておく。

#プロセスの確認
ps -ef | grep mysql
#出力
 501 41981     1   0  8:19PM ttys002    0:00.02 /bin/sh /usr/local/Cellar/mysql/8.0.26/bin/mysqld_safe --datadir=/usr/local/var/mysql --pid-file=/usr/local/var/mysql/UsersMacBook-Pro.local.pid

#表示されたプロセスを削除
kill -9 41981

killコマンドのオプション-9で強制終了。上記の41981がプロセスIDです。

3. 新しくMySQL をインストール

#brewコマンドで新しくMySQLをインストール
brew install mysql

#インストール完了したら
mysql.server start
mysql -u root
#ログインが確認できたらexit

#Railsアプリに必要なら必要に応じて
rails db:create
rails db:migrate
rails db:seed

参考文献

The server quit without updating PID file mysqlエラー解決方法
MacでHomebrewを使ってinstallしたMySQL5.6とMySQL5.7を切り替えて使う
MySQL起動エラーの対処の仕方【Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38)】
mysqlが死んだ日

終わりに

無事解決してよかった、、、。(切実)
Twitterで日々の学習をアウトプットしています。
未熟者ですが、ご興味あれば覗いてやってください。→Twitter

0
0
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
0
0