データベース作成初心者のためのMySQL入門(「The server quit without updating PID file」の対処編)

サーバ・DBなどのイメージズを作成している

こんにちは!禄太です!

現在、技術力や知識を深めるために、IT分野の学習を進めています。
プログラミング/Linux/ネットワーク…各分野で学習したこと(手詰まりしたこと)を、備忘録としてまとめています。

禄太
今回は、「PID file」が存在しないことで、MySQLが起動できないエラーの対処法です。

以下のエラーに遭遇している方の参考になれば幸いです!

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

原因と解決策を先に言ってしまうと、

【原因①】PID file が、存在していなかった。
<解決①>PID file を作成する。

【原因②】MySQLの設定で、PID file の場所が正しく設定されていなかった。
<解決②>MySQLの設定画面で、PID fileのパスを正しく設定する。

となります!
前回の以下の記事も参考にどうぞ!

PCで仕事をしている人

Homebrewでサクッとインストール!MySQLの環境構築(失敗談あり)

2021年10月16日

目次

そもそも、PID file とは?

まず、「PID」とは、プロセスIDのことです。

「プロセス」とは、実行中のプログラムのことです。

システムの中では、複数のプロセスが同時に稼働していて、ユーザがコマンドを実行するたびに「プロセス」が生成されます。その後、プログラムが終了すると、プロセスも消滅します。

複数実行している各プロセスについては、プロセスを一意に判別ができるよう、識別番号がわりふられています。

これが、PIDです。

PID file をターミナルで作成する!


HomebrewでMySQLをインストールすると、「/usr/local/var/mysql」のフォルダが出来上がります。
その中に、「*******.local.pid」というファイルがあるか、確認してみましょう。

【①ディレクトリ移動】$ cd /usr/local/var/mysql
【②ファイルの確認】 $ ls

もし、「*******.local.pid」がなければ、以下のコマンドでファイルを作成します。
空のファイルであっても、命名規則に従って作成されていれば大丈夫です。
「ホスト名.local.pid」で作成してあげましょう!

【①ホスト名の確認】$ uname -n
【②PIDfile 作成】$ touch /usr/local/var/mysql/(①のホスト名).local.pid

【参考】mysql 起動時のThe server quit without updating PID file エラーの回避法

ここまでの参考は、Quiitaの「@jonakp」さんの記事でした。
が、私は、この後の権限変更を実行してもダメでした。
 ->MySQLを泣く泣く再インストールしてもダメ、、、

権限設定以外にも、プロセスを見直すという方法もあるようです。
こちらの記事もご参考に貼っておきます。

【参考】MySQLが起動しない(The server quit without updating PID file ~~~)

禄太
これで、本当にやる気がなくなり、ふて寝した!

MySQLの設定画面で、PID fileのパスを正しく設定する。

もう、全くやる気がなくなっていたのですが、ふて寝したら気持ちがすっきりしたので、次の日に再度原因究明。
 ->けれど、一向にわからず、、、

色々と探してみた結果、Macのシステム環境設定から設定ができることを知った。

①システム環境設定の「MySQL」を選択

②「Configuration」を選択

禄太
あれ、、、?ここにも、PIDの設定項目がある?
しかも、昨日の夜、 「$ sudo chown 〜 」したはずなのに、PIDのところが変わっていない?

③物は試しで、作成したPIDのパスを指定してみる。

④無事に、MySQLが起動する!

禄太
めでたい!
だが、原因よくわからん!

とりあえず、権限の設定が変だった。っていうのが分かったのですが、、、。
この辺の原因究明は、また今度でいいかな。
たぶん、「/usr/local/var/mysql」配下のファイル群をの権限を全て、自分に書き換えるとかにすればよかったのだろうけど、今は深追いしないようにしよう、、、。
うん、もう眠いし。とりあえず動いてよかった、、、。