ローカル制作環境のXAMPPを起動した際、Apacheは起動するもののMySQLが起動しない事象が発生しました。完全解決したわけではないのですが参考になればと思いまとめています。
エラー発生時の状況
作業環境
Windows11
XAMPP for Windows 8.2.4
XAMPP for Windows 8.2.12
XAMPPコントロールパネルでApacheとMySQLを起動すると、Apacheは起動するもののMySQLがすぐに停止。XAMPPコントロールパネルには次のように表示されました。
15:20:11 [mysql] Status change detected: running
15:20:12 [mysql] Status change detected: stopped
15:20:12 [mysql] Error: MySQL shutdown unexpectedly.
15:20:12 [mysql] This may be due to a blocked port, missing dependencies,
15:20:12 [mysql] improper privileges, a crash, or a shutdown by another method.
15:20:12 [mysql] Press the Logs button to view error logs and check
15:20:12 [mysql] the Windows Event Viewer for more clues
15:20:12 [mysql] If you need more help, copy and post this
15:20:12 [mysql] entire log window on the forums
MySQL 復旧まで
調べてみると “ポート3306の競合・データ破損” 等が原因でよく起こるトラブルとのこと。
今まで使えていた環境からシステムの変更は行っていないためポート競合は考えにくく、今回はデータ破損の場合の復旧方法を参考に試してみることにしました。
実際に行った手順
- XAMPPのExplorerボタンからmysqlフォルダへ移動。
- dataフォルダを任意の場所へ一時的に複製。
- backupフォルダ内のファイル全てコピーし、dataフォルダ内へ上書き。
- 複製したdataフォルダ内のibdata1をdataフォルダ内へ上書き。
- XAMPP再起動
この手順は、“破損の可能性がある箇所をバックアップと差し替え、最低限必要なibdata1を上書きした” ということになります。
結果、MySQLは起動することができました。
PR
残る問題
DBユーザー作り直し
MySQLが起動できたのでWordPressの作業をしようとしたところ、「データベース接続確立エラー」が表示されました。
wp-config.phpのdefine( ‘WP_DEBUG’, false );をtrueにしてエラー詳細を表示するとユーザー情報関連の問題だと書かれています。このWordPressは作業用のDBユーザーを作成し、”データベース固有の権限” を付与して接続していました。
これは、今回の復旧手順ではDBユーザーを復旧できていないのが原因です。DBユーザーを作り直すことでWordPressが復旧しました。
再発あり
冒頭で完全解決していないと書いているように、実はこの事象が何度か起こっています。再度 “Start” ボタンを押すと起動できることもあり、ダメな場合は今回の手順を再度行っています。
新しいXAMPP 8.2.12 を使ってみましたが同様の事象が発生してしまいました。
まとめ
- XAMPPのMySQLが起動直後に終了してしまう。
- 再度 “Start” で起動する場合もある。
- フォルダ xampp/mysql/data の書き換えでMySQL起動できたが、この方法ではDBユーザーの復旧はできない。
- DBユーザーは作り直す必要がある。
- 新たにインストールしたXAMPPでも発生する。
- 原因は特定できていない。
再発防止策(になるかもしれない)
- XAMPPコントロールパネルの正しい終了手順を守る。
- Apache を Stop
- MySQL を Stop
- 上記の停止を確認後、Quit
- MySQL起動中はシャットダウン、スリープにしない。

XAMPPを使っての作業が多い私はこのような事態になると作業が大幅に遅れてしまいます。PC側の環境が影響してそうな気もしますが現在も原因調査中です。
PR

