MYSQL

homebrewでインストールしたMySQLがmysql.server startできない場合の対処法【ERROR! The server quit without updating PID file (/usr/local/var/mysql/***.local.pid).】

人工知能 データ

 

先日、homebrewでmysqlをインストールして起動しようとしたらうまく行かなかったので、その対処法を紹介します。

 

【起きていた現象】

・brew services listでは「mysql started」になっている

・mysql -urootすると「Access denied for user 'root'@'localhost' (using password: YES)」になってしまう

mysql.server startすると「The server quit without updating PID file (/usr/local/var/mysql/***.local.pid).」が出る

 

【前提】

・homebrewでmysqlをインストール済み

・which mysqlで「/usr/local/opt/mysql/bin/mysql」と表示される

・mysql --versionで正常にバージョン表示される

 

前提を満たしていない場合は、以下のコマンドでmysqlをインストールしてください

 

brew install mysql

【ERROR! The server quit without updating PID file (/usr/local/var/mysql/***.local.pid).】に遭遇してmysql.server startできない

 

本題のThe server quit without updating PID file (/usr/local/var/mysql/***.local.pid).」の解決方法です。

 

結論から話すと、以下のコマンドを叩いて、エラーを確認しましょう。

 

 less /usr/local/var/mysql/$(uname -n).err

 

自分の場合は次のようなエラーが出ていました。

 

2021-07-18T00:29:49.300900Z 0 [ERROR] [MY-010270] [Server] Can't start server : Bind on unix socket: Address already in use
2021-07-18T00:29:49.301717Z 0 [ERROR] [MY-010258] [Server] Do you already have another mysqld server running on socket: /tmp/mysql.sock ?

 

そこで以下の順序で対応しました。

 

$(uname -n).local.pidを作成

そもそも、***.local.pidが存在しないかなと思ったので、一応作成コマンドを叩きました。

以下を実行して、実行中のシステム名を表示します。

$(uname -n)

表示されたシステム名をもとに、pidファイルを以下コマンドで生成します。

touch さきほど表示されたシステム名.local.pid

sudo rm /tmp/mysql.sockを実行

/tmp/mysql.sockを消しました。

 sudo rm /tmp/mysql.sock

他の実行中のmysqldを削除

 

以下のコマンドでmysqldのプロセスを表示。

 

ps aux |grep mysql

 

既存のプロセスはキルしました。

(終了させる)

 

kill -9 番号

 

ちなみに、プロセスの番号(ID)はps aux |grep mysqlして表示される以下の

あなたのマシン 47390   0.0  0.0  4286840    756 s002  S+    9:30AM   0:00.01 grep mysqld

47390」とかです。

 

再度実行

 

再度実行してみます。

 

mysql.server start

 

うまくいきました!!

 

Starting MySQL
. SUCCESS! 

 

あとは「mysql -uroot」でログインしてみましょう。

 

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.25 Homebrew

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

実行して、上記のように入ることができれば成功です。

 

他に試したこと

 

上記の解決に至るまでに試したことを書いていきます。

(結果的に解決につながらなかったので、意味がなかったチャレンジ達です)

 

①再インストール

 

home brewでmysqlをアンインストールして、再度インストールしました。

コマンドは以下のとおりです。

 

//実行中のmysqlを確認
brew services list

//mysqlを停止
brew services stop mysql

//アンインストール
brew uninstall mysql

//再インストール
brew install mysql

 

無事にインストールされれば、以下のように表示されます

 

To connect run:
    mysql -uroot

To have launchd start mysql now and restart at login:
  brew services start mysql
Or, if you don't want/need a background service you can just run:
  mysql.server start

 

ここで「brew services start mysql」だとうまくいくのに、「mysql.server start」だと失敗するのに悩まされましたね...。

brew services start mysqlでうまくいってても、mysqlにログインしようとするとAccess deniedになるので、結局本質的にはうまくいってないのでしょうね。

 

rew services start mysqlで「Successfully started」と出るのは意味合い的には「mysqlサーバーが正常に起動されましたよ」ということで、MySQLサーバー自体がログインできる状態であるかまでは見てくれていないと思います。

 

✔ 直接成功につながらなかった

 

ネットでググっていると「再インストールでうまくいきましたよ」みたいな記事も見ましたが、僕の場合はうまくいきませんでした。

 

というか、今回の反省点なのですが、何も考えずに再インストールする前にエラー見るべきでした。

 

②mysqlのセーフティモードでの起動

 

brew services start mysqlはうまくいってるし、問題はmysqlへのログインなので、セーフティモードで起動してしまえば問題ないのでは?と考えて、以下のコマンドを実行してみました。

 

mysqld_safe --skip-grant-tables &

 

この状態で別ウィンドウなりでmysqlにログインしてみましたが、やはり結果はAccessDeniedでした。

 

結論:エラーを見ましょう

 

ということで、今回はmysql.server startすると「The server quit without updating PID file (/usr/local/var/mysql/***.local.pid).」が出る場合の対処法について解説しました。

 

結論は「エラーを見ましょう」です。

 

less /usr/local/var/mysql/$(uname -n).err

 

上記を実行すれば、失敗の原因は書かれています。

あとは1つ1つ確認していけばOKです。

さきほども話しましたが、僕はエラーを見ないで、「brew services start mysql」ではうまくいくのに、(いっているように見えるのに)「mysql.server start」で失敗するのはなぜだ?ということばかりに気をとられて無駄な時間を過ごしました...。

 

あなたは同じ過ちをしないようにしてくださいね。

今回は以上です。

 

プログラミングスクールに関する情報

2021年最新プログラミングスクール おすすめランキング 【WEBエンジニアになりたい方向け】と書かれた画像
【無料あり】プログラミングスクールおすすめランキング【WEBエンジニアになりたい方向け】

  あなたプログラミングスクールに通いたいけどたくさんありすぎてどこがいいのかわかりません。   最近はエンジニアブームということもありプログラミングスクールが増えました。 一方でたくさんありすぎてど ...

続きを見る

フリーランス
無料あり:フリーランスを目指せるプログラミングスクールランキング【体験をもとに徹底分析しました】

  あなたフリーランスエンジニアを目指すことができるプログラミングスクールってありますか?   最近では、高年収や働きやすさの魅力からフリーランスエンジニアを目指す方も増えてきまし ...

続きを見る

返金保証ありのプログラミングスクールランキング【エンジニアが選びました】と表示されたパソコンの画面
返金保証ありのプログラミングスクールランキング【エンジニアが選びました】

  あなた返金保証がついているオススメのプログラミングスクールってありますか?   結論から話すと、返金保証つきのプログラミングスクールランキングは次の通りです。 1位:テックキャンプ  【転職成功率 ...

続きを見る

WEB系自社開発企業にいけるプログラミングスクールランキング【現役エンジニアおすすめ】と書かれた画像
WEB系自社開発企業にいけるプログラミングスクールランキング【現役エンジニアおすすめ】

  あなたWEB系の自社開発企業に就職したいです。 オススメのスクールを教えて下さい。   エンジニアを目指すにあたってまず最初に自社開発企業への転職を希望する方がほとんどです。 ...

続きを見る

プログラミンングスクールに無料で通うならココ【現役エンジニアおすすめ】と書かれた画像
プログラミンングスクールに無料で通うならココ【現役エンジニアおすすめ】

  あなたプログラミングスクールに通いたいけどどのスクールも何十万もして通えません。コスパよくエンジニアになれるスクールはありますか?   今回はコスパが良いどころか完全に無料でプ ...

続きを見る

-MYSQL

© 2021 エンジニアてんし君ブログ