XAMPP(ザンプ)を使ってローカル環境に構築したWordPressにログインしようとしたところ、データベース接続確立エラーが出ました。
先日まで普通に使えており、特に何もしていないのに突然エラーで使用不可能になりました…管理画面どころかphpMyAdminにもログインできません。
調べたところ、データベースが何らかの原因で破損していたようです。
なんとか無事に復旧できましたので、XAMPPの再インストールとデータベースの復元方法をまとめてみました。
僕はデータベースにそれほど詳しくないので完全に自己流です。
再インストール→データベースの上書きという力技ですので予めご了承下さい。
この記事の目次
XAMPPでデータベース接続確立エラーが出た時の対処法
XAMPPでデータベース接続確立エラーが出た時の状況は以下です。
- Windows10にXAMPPをインストール。
- XAMPP内にWordPressをインストール。
- ある日突然データベース接続確立エラーが出た。
- phpMyAdminによるデータベースのバックアップは無し。
これから紹介する内容は環境によっては上手くいかないかもしれません。
なので、1度目を通してから必要な箇所を試していただければと思います。
エラーの状況と試したこと
先日いつものようにXAMPPを立ち上げ、WordPressの管理画面にログインしようとしたところデータベース接続確立エラーが出ました。
ずら~とWarningが出ており、wp-db.phpでエラーが発生している様子です。
エラー説明を日本語訳してみると、
MySQL server has gone away:MySQLサーバーがなくなりました
とあります。
念のためwp-config.phpを確認してみるもユーザー名もパスワードも正しく記述されています。そもそもXAMPP内のファイルは一切編集していないので、変わっているはずもありません。
ここから以下のようなことを色々試したのですが一向に解決できません。
試したこと
- XAMPPやPCの再起動
- wp-config.phpの確認
- localhostを127.0.0.1に変更
- MySQLのポート番号の確認&変更
- xampp/mysql/data/ibdata1などの削除
そしてついにXAMPPのMySQLが起動しなくなりました…
Startを押すと以下のエラーがでます。
【原文】
MySQL shutdown unexpectedly.
This may be due to a blocked port, missing dependencies,
improper privileges, a crash, or a shutdown by another method.
Press the Logs button to view error logs and check
the Windows Event Viewer for more clues
If you need more help, copy and post this
entire log window on the forums
【日本語訳】
MySQLが予期せずシャットダウンしました。
これは、ポートがブロックされている、依存関係が欠落している、などが原因である可能性があります。
不適切な権限、クラッシュ、または別の方法によるシャットダウン。
[ログ]ボタンを押してエラーログを表示し、確認します
より多くの手がかりのためのWindowsイベントビューア
さらにヘルプが必要な場合は、これをコピーして投稿してください
フォーラムのログウィンドウ全体
Startを押すとすぐに停止してしまいます。
調べたところデータベースの破損の可能性が高いとのこと...
で、今回考えられる原因は
- Windowsアップデート
- XAMPPを終了しないままシャットダウン
この2つくらいです。
そういえば以前のPCにもXAMPPをインストールしており、突如このエラーでMySQLが起動できなくなったのでWindowsアップデートが原因の可能性が高いのかも...
解決しようとしたのですが、エラーの内容が曖昧すぎて良く分かりません。
後日調べて「Error: MySQL shutdown unexpectedly.」のエラーを解決しました。
- XAMPPで「Error: MySQL shutdown unexpectedly.」が出た時の復旧方法。
続きを見る
MySQLのエラーを解決し、起動する方法は別記事(↑)に書いています。
MySQLの修復は上手くいったのですが、それでも「データベース接続確立エラー」が出てダメ...ということで思い切ってXAMPPを再インストールして解決しました!
というのが当記事の内容です。
XAMPPのバックアップに必要なファイル
XAMPPをアンインストールしてしまうと、その時点でインストールしたフォルダ内の全てのファイルが削除されてしまうので、バックアップを取る作業がまず必要です。
バックアップに必要なファイルは数種類ですが、アンインストール後は取り返しがつかないので、「xampp」フォルダを丸ごとをバックアップとしてどこかにコピーしておくと安心です。
インストール時に変更していなければ、XAMPPがインストールされるのは「xampp」という名前のフォルダです。これをどこかにコピーしておきましょう。
XAMPPフォルダ内の以下のファイルが特に重要です。
- htdocs:公開フォルダ
- mysql:XAMPPで使用するデータベース
- phpMyAdmin:MySQLの管理ツール
- apache:サーバーソフト
- php:phpソフト
「htdocs」や「mysql」などの自分で編集したオリジナルのファイルが含まれるものさえバックアップしておけば最悪何とかなります。
今回使用したのは「htdocs」「mysql」「phpMyAdmin」の3ファイルだけですが、後々必要になる可能性もあるのでやはり「xampp」フォルダ丸ごとをコピーするのがオススメです。
XAMPPの再インストール
バックアップを取ったらあとはパソコンからアンインストールするだけです。
xamppフォルダ内のuninstall.exeを実行すればアンインストールが可能です。
もちろんパソコンのプログラム一覧からアンインストールしてもOK!
Do you want to uninstall XAMPP and all of its modules?
XAMPPとそのすべてのモジュールをアンインストールしますか?
と聞かれます。ここでYesを押すとアンインストールが実行されます。
この先で✕を押しても止められませんのでバックアップを最終確認しましょう。
htdocsフォルダも削除しますか?と聞かれます。
XAMPPのインストールフォルダは空でないとダメなので、消します。
アンインストールが終了したら、xamppフォルダ内に何かフォルダが残っていないか確認しましょう。僕の場合はなぜかphpMyAdminフォルダが残っていました。
あとはXAMPPのインストーラーをダウンロードして実行すればOK!
関連記事
詳しいインストール方法は別記事にまとめてあります。
XAMPPのインストール方法まとめ。ザンプでローカル環境にWordPressを構築しよう!オフラインで使えるテスト環境。
XAMPPを再インストールしたところMySQLが無事に起動するようになりました。
続いて、バックアップからデータとデータベースの復旧作業を行います。
XAMPPデータベースの復旧作業
ここからは、先ほどバックアップとしてコピーしておいた「xampp」フォルダ内から新しくインストールしたXAMPPのインストールフォルダ「xampp」に必要なファイルを上書き保存していきます。
同名のファイル名でややこしい方はバックアップしたフォルダを別の名前にしておきましょう。
「htdocs」と「phpMyAdmin」をインストールしたxampp内に上書き保存します。
この状態でxamppを起動してWordpressのログイン画面にアクセスしてみます。
別のエラーが発生しました。
Access denied for user 'root'@'localhost' (using password:YES)
ユーザー 'root' @ 'localhost'のアクセスが拒否されました(パスワードを使用)
XAMPPのデータベースにパスワードを設定している場合、何らかの理由でこれが変更?されているみたいです。
phpMyAdminにも以前のパスワードでログインできません。
そこで以前まで使用していたパスワードを再設定します。
(wp-config.php内で確認可)
データベースパスワードの再設定
データベースパスワードの設定はXAMPPのコントロール画面にあるShellからコマンドベースで行います。
XAMPPでApacheとMySQLをstartで起動した後、コマンドを実行して下さい。
実行するコマンドは以下です。
cd mysql\bin
mysql -u root
set password=password('新規パスワード');
exit
新規設定コマンドでOKでした。
こちらも別の記事に詳しいやり方をまとめています。
関連記事
XAMPP(ザンプ)のセキュリティ設定方法!データベースのパスワード設定からIPアドレスの制限まで。
「MySQL(MariaDB)にパスワードを設定する」という項目にジャンプします。
パスワードを再設定すればようやくphpMyAdminにログインできるようになります。
パスワードを設定していなかった場合は分かりません…そのままログインできる?
データベースの復元
再度Wordpressのログイン画面にアクセスしてみます。
また別のエラーが出ました。
Unknown database 'データベース名'
不明なデータベース'データベース名'という内容です。
現時点で「htdocs」と「phpMyAdmin」だけを戻した状態でデータベースが存在しない状態となっているためこのエラーが出ます。
早速バックアップファイルからデータベースを戻しましょう。
XAMPPのデータベースの場所は以下です。
xampp > mysql > data > データベース名のフォルダ
今回は「wpdb_01」という名前のファイルが以前からWordpressで使用していたデータベース名です。
このデータベース(僕はwpdb_01)をインストールしたxampp内のmysql>data内にコピーします。
Wordpressの再設定-失敗
データベースも元の場所に戻ったので再度Wordpressのログイン画面にアクセスしてみます。
おお!これは成功しそうな感じ!
ユーザー名生きてるじゃん!
はい。そんな簡単にはいきません。
完全にデータベースが破損しているようです…
phpMyAdminにはデータベースの修復機能がありますのでこれを試してみます。
phpMyAdminでテーブルの修復を行う
やり方は以下でとても簡単です。
- phpMyAdminにログインする
- データベースを選択する
- 修復したいテーブルを選択する
- メニューから修復をクリックする
REPAIR TABLEというSQLコマンドを選択したテーブルに実行してくれます。
Wordpressにも同機能があるようです。
照合順序が使用中は破損の可能性が高い
phpMyAdminにログインしてデータベースを選択するとテーブルの一覧が出ます。
ここで照合順序が「使用中」となっていればデータベースが破損している可能性が高いらしいです。
正常な場合は「utf8mb4_unicode_ci」などと照合順が表示されます。
えー、全部のテーブルが使用中です。お亡くなりになっている可能性が高いです。
が、ダメもとでやってみましょう。
データベース内の全テーブルをチェックし...
「チェックしたものを:」とあるプルダウンをクリック。
プルダウンから「テーブルを修復する」を選びます。
画面右下の方にある実行をクリックでOK!
コマンド自体は実行されましたが、全テーブルリペアエラーとなりました。
これで治ったらラッキーですね…
データベースのバックアップがあるならphpMyAdminからインポートで治る可能性が高いです。
僕の場合所詮テスト環境と思いバックアップは取っていませんでしたので地獄ですw
データベースを作り直す
調べていたところテーブルの修復がコマンドで実行できない場合は、テーブルを同名で作り直すのが良いそうです。
データベースに詳しくない自分がゴリゴリやっても無駄なのは目に見えています。
1個づつ作ってられないので全削除→新規作成という力技を試します。
再度、下記のXAMPP内のデータベースまでアクセスします。
xampp > mysql > data > データベース名のフォルダ
そして拡張子が「.frm」のFRMファイル。そして「.ibd」のIBDファイルを全削除します。
念のためインストール時に作成される「db.opt」は残しました。
削除後はXAMPPのApacheとMySQLを再起動します。
そして再々再度くらい?ログイン画面にアクセス。
すると先ほどとは少し違い、ユーザー名とパスワードの入力欄があります。
ユーザー名およびパスワードは以前使用していたものを入力しましょう。
そして進んでみる…
お!いけた。
ちなみにXAMPPを再起動していないと先ほどと同じようにエラー画面で止まります。
いつも通りログインしてみます。
これでダメなら1からまたサイト作った方が早いw
はい!戻りました!
良く分からないのでかなりの力技でしたが無事にまたXAMPPでWordpressが使えるようになりました・w・
ここで少し欲を出してデータベースをバックアップファイルから戻してみました。
(バックアップからxampp内にコピー)
テーマが使用しているデータベースやプラグインが使用しているデータベースでは変わらずデータベースエラーが発生してしまいました…
あくまで削除→新規作成という過程を踏まないと治らないようです。
そこでデータベースを削除してから、テーマやプラグインを再インストールしたり有効化してみたところうまく治りました。
まとめ
XAMPP内にインストールしたWordpressで突然データベース接続確立エラーが発生してしまった時の解決策をご紹介してみました。
もしもWindowsアップデートでXAMPPがデータベース接続エラーになったりMySQLが立ち上がらないようになるのであればなかなか難儀ですね…
あくまでも僕の環境で上手くいっただけであって上手くいかないかも…
バックアップを取っていなくてデータベースが破損してしまった場合の最終手段としてご検討いただけますと幸いです。
XAMPPでもデータベースのバックアップは大切です( ;∀;)