昨日まで使えていたMysqlが、唐突に起動しなくなったため備忘録として、今後も使えるよう参照を多めにして残します。
初心者向けです。
環境
mysql Ver 8.0.17
Rails 5.2.4
はじめに
昨晩までRailsで開発しており、起床して作業しようとするとRails s が出来ない。PCが何故か再起動されていた(普段はスリープ)
こんなことはよくある話で、PCを再起動したりするとmysqlを再起動させる必要があります。
mysql.server restart
で大抵直るのが大半。以後、msr
と書きます。
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/[ユーザー名].local.pid).
とのエラーが発生😨
考えられる原因
参照 : The server quit without updating PID file mysqlエラー解決方法
こちらのエラーの出現理由ですが、mysqlのバージョン切り替え時に出現すると思われます。
私はmysqlを使っていたので、brewのupdateを行った際にmysqlがアップデートされてしまいました。
mysqlのバージョンを切り替え → 前のmysqlバージョンで使用したデータを使って起動した時に出るようです。
参照 : mysql 起動時のThe server quit without updating PID file エラーの回避法
そもそもpidファイルが存在していない。
pidファイルに適切な権限が設定されていない
私の場合、特にupdateしたわけでもないので原因は未だ謎ですが、もしupdateした場合は下記の内容以外にも試す必要がありそうです。
解決しなかった方法
【1】PC再起動
とりあえず、PCを再起動してみる。結構これで直ること(mysqlに関わらず)もあるのでとりあえず試してみます。
msr
してみても
下記全部試すもエラー文変わらず。
mysql.server restart
mysql.server start
sudo mysql.server restart
→ sudoは 「superuser root doの訳」
【2】PID fileを作成
参照 : MySQL起動できなくなった The server quit without updating PID file
エラー文から、どうやら「mysql配下のpidがないよ」と言われているので、
cd
で /usr/local/var/mysql
まで潜りls
で確認。
その後、findコマンドで検索。(ご自身のユーザー名「uname -n
で確認可能できる」で検索してください)
[PC名] mysql % find [PC名].local.pid
find: [PC名].local.pid: No such file or directory
ファイルがないと言われているので、一旦作成してみる。(PC名は、[PC名].local.errがあるはずなのでそのPC名のところです)
[PC名] mysql $ touch /[PC名].local.pid
またmsr
してみる
エラー文変わらず。
vim [PC名].local.pid
で確認しても空のファイルなので、何か記載がいるんだろうと推測するも解決には至らず。
ちなみに、err
の方にはぎっしり色々書いてある。
【3】権限変更
参照 : mysql起動で「The server quit without updating PID file」
下記記事を参考に、権限がなくて落ちているらしいので一旦、権限を自分からmysqlに変更してみる
[PC名] mysql $sudo chown -R _mysql:_mysql /usr/local/var/mysql
権限が変更する際にパスワードが要求されるので、入力する。
msr
で試す。
ちなみに、権限が変更されてるか確認したい場合は、mysql
から一つ戻りvar
の階層で
[PC名] var $ ls -l
をして mysql
のところの権限がmysql
になっていればOK。
また、権限を戻したければ下記のコマンドでもとに戻ります。
[PC名] mysql $ sudo chown -R [PC名]:_mysql /usr/local/var/mysql
【4】プロセス確認
参照 : http://tech-outlines.hateblo.jp/entry/2015/03/24/180940
Railsでもプロセスをkillすることがあるので、それで治ったらいいと期待を込め、
ps -alx | grep mysql
で試してみる。。このコマンドを打った時に走るプロセスしかない → 起動していないと解釈
501 3679 598 4006 0 31 0 4278536 716 - S+ 0 ttys009 0:00.00 grep mysql
結果
どうしても解決に至らず、mysqlを再インストールすることで解決しました。