トラブル
■突然MySQLを起動できなくなった
XAMPPのコントロールパネルからApacheは起動できるが、MySQLを起動しようとすると以下のエラーになる。
11:45:48 [mysql] Attempting to start MySQL app...
11:45:48 [mysql] Status change detected: running
11:45:52 [mysql] Status change detected: stopped
11:45:52 [mysql] Error: MySQL shutdown unexpectedly.
11:45:52 [mysql] This may be due to a blocked port, missing dependencies,
11:45:52 [mysql] improper privileges, a crash, or a shutdown by another method.
11:45:52 [mysql] Press the Logs button to view error logs and check
11:45:52 [mysql] the Windows Event Viewer for more clues
11:45:52 [mysql] If you need more help, copy and post this
11:45:52 [mysql] entire log window on the forums
XAMPPのコントロールパネルの「Netstat」から確認しても、
すでにポートが使われている…ということは無さそう。
【xammp】mysqlが起動しない時の対処 - Qiita
https://qiita.com/gone0021/items/1240f857776c6bb620b6
※念のため、作業前に C:\xampp\mysql を丸ごと退避させてから作業する。
C:\xampp\mysql\data から以下のファイルを一時的に退避する。(後から使用する。)
ib_logfile0
ib_logfile1
ibdata1
MySQLを起動する。
さらに C:\xampp\mysql\backup からすべてのファイルとフォルダーをコピーし、C:\xampp\mysql\data に貼り付け。
置換を求められるのですべて置換。
これでXAMPPのコントロールパネルから起動できた。
…が、http://localhost/phpmyadmin/ にアクセスすると以下のエラーが表示された。
接続できません。設定が無効です。
mysqli::real_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES)
MySQL サーバに接続しようとしましたが拒否されました。config.inc.php のホスト、ユーザ名、パスワードが MySQL サーバの管理者から与えられた情報と一致するか確認してください。
backupからの復元により、rootのパスワード設定が消失していると思われるので再設定。
(設定方法は、このファイル内の「MySQL」を参照。)
これでphpMyAdminに接続できるようになった。
…が、データベース一覧にテーブルは確認できるものの、テーブルの内容を表示しようとすると以下のエラーになった。
#1932 - Table 'test.address' doesn't exist in engine
退避しておいた C:\xampp\mysql\data 内の以下ファイルを戻してMySQLを再起動。
ib_logfile0
ib_logfile1
ibdata1
これで元通りアクセスできるようになったみたい。
結局のところ、C:\xampp\mysql\backup からの復旧で何とかなったのかもしれない?
(ib_logfile0 などの退避はしなくてもいいかと思ったが、backup内にも存在するので退避は必須だと思われる。)
直接の原因は、ユーザ情報テーブルなどの破損が原因か。
Windowsをシャットダウンする前に、手動でApacheとMySQLを終了させるべきか。