2018年05月14日記載
Starting MySQL... ERROR!発生、焦らず解決目指そう
今回のコラムはMySQL運用における個人メモである。もしかしたらGoogle検索で訪問されるかもしれないことを想定し忘備録として書くことにした。私自身、過去幾度も遭遇し苦慮した思いがあるので、ここは冷静に判断できるときに記録しておこうとの思いである。

MySQLで遭遇するエラーで見かけるのはこれだ。

> mysql -u root -p

Starting MySQL... ERROR! The server quit without updating PID file (/usr/local/mysql/****.pid)
または

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

この文字が表示されてMySQLが起動しない問題である。このエラーが出ると私のような素人たちは、とにもかくにもGoogle先生に問い合わせを試みる。

「The server quit without updating PID file」で検索とか。。。

すると、たくさんヒットするわけで、やみくもにググったページのとおり実行しても大抵はエラーが改善することなくMySQLの起動に至らないことが多い。理由単純。起動しない理由は多種多様だからである。

以下の環境であると仮定して説明する

サーバ名:infobuild.jp
MySQLインストールディレクトリ:/usr/local/mysql
MySQLデータディレクトリ:/usr/local/mysql/data
設定ファイル場所:/etc/my.cnf

MySQLが起動を試みて発生するエラーには主に2種類がある。それが先に示した

Starting MySQL... ERROR! The server quit without updating PID file (/usr/local/mysql/data/www.infobuild.jp.pid)

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

の2つだ。

前者の場合、エラーファイルが生成されるとこのエラーの文字列の中に
/usr/local/mysql/[マシン名].local.err
のような拡張子に「.err」とついたファイルが生成されたことが通知される。エラーの原因はすべてここに書かれている。

慌てず騒がずやみくもにGoogleに聞く前にこのエラーファイルをチェックするのが解決への近道である。

(例)vi /usr/local/mysql/data/www.infobuild.jp.local.err

Shiftキー+Gキーで最終行を確認すると、

[ERROR] [MY-010119] [Server] Abortin

などの[ERROR] からはじまる記載文字列が見つかる。この[ERROR] からはじまる記載内容が起動しない原因を表している。

私が経験した主たる原因の多い順に並べると、

(1)/etc/my.cnfの記載ミス
(2)dataディレクトリの権限付与漏れ
(3)/tmp/mysql.sock.lock.が存在しない
(4)すでにMySQLが起動中なのに再度起動しようと試みた

の順だった。過去問題なく起動したのに、再起動しようとしたら起動せずにエラー担った場合は、私の場合だとほとんどが(1)が原因だった。my.cnf記載ミスの理由はerrファイルに書かれている。英語ログ文でも冷静に読めば自分が過去なにかしら手を入れた記憶がすぐに蘇り、すぐにどこに記載誤りがあるかが理解できるはずだ。

MySQL8.0.11以降の場合、my.cnfはデフォルトでは設定ファイルが存在しなくても起動するので、もし修正箇所がどこを示しているのかわからくなったら、念の為現行のmy.cnfファイルをリネームバックアップを取ってからmy.cnfを削除して試みると良い。

削除だけで改善したらmy.cnfの記載方法が間違っていることというわけである。

その他のケースでは、
1)touch /usr/local/mysql/data/****.local.pidで新規作成
2)/tmp/mysql.sockの削除
3)err ファイルを消す
4).err ファイルの所有者をmysqlに変更する

などがあるが、いずれにしてもerrファイルを探し、まず中身を読むところから始めたい。特にサービス運用中に起動しないエラーに遭遇すると誰もが焦ってしまう。そんなときこそ焦らずログを読む。面倒のようでもっとも近道である。
コラムワード検索
表示件数
ワード検索
本コラムに関する意見
Twitterにて受け付けます @megahit_jp