「データベース接続の確立エラー」は、WordPressを使用していれば遭遇する可能性のある、最も一般的なエラーの1つ。そして、死の真っ白画面(WSOD)の原因です。これは、サイトがWordPressデータベースと通信していない、もしくはアクセスできない状態を表しており、サイト全体がダウンしていることを意味します。
このエラーは、売上、トラフィック、分析に直接影響するため、すぐに解決が必要です。
今回の記事では、このエラーを引き起こす一般的な事例とサイトをすぐに復旧させる簡単な方法をご紹介します。
「データベース接続確立エラー」の解決方法について動画での解説もご用意しています。
「データベース接続確立エラー」とは
投稿データ、固定ページデータ、メタ情報、プラグイン設定、ログイン情報など、WordPressサイト上にあるすべての情報は、MySQLデータベースに格納されています。ただし、画像などのメディアコンテンツと、index.php、wp-login.phpなどのテーマ、プラグイン、コアファイルは例外です。
PHPは、訪問者がサイトにアクセスすると、ページ上のコードを実行し、データベースから情報を取得して、訪問者のブラウザにデータを表示します。
これが正しく行われない場合、以下のように「データベース接続確立エラー」というメッセージが表示されます。接続が確立できず、ページに表示するデータが取得できないため、ページ全体が空白になっている状態です。このエラーが発生すると、サイトのフロントエンドが壊れるのはもちろん、WordPressの管理画面にもアクセスできなくなります。
ですが、キャッシュの有効期限によっては、訪問者側にすぐにこのエラーが表示されるとは限りません。例えば、Kinstaでは、デフォルトですべてのWordPressサイトが1時間キャッシュされるように設定されています。そのため、キャッシュを利用してサイトが表示されている間は、訪問者は通常通り閲覧できることになります。
また、Kinstaのカスタマーサポートにご連絡いただければ、1時間や1週間など、ご希望に応じてキャッシュの期間を変更することも可能です。サイトを頻繁に更新しない場合は、新しいファイルを定期的に取得する必要がないため、キャッシュの期間を長く設定すれば、サイトのパフォーマンスを向上させることができます。そして、(スクリプトやサイトの一部がキャッシュを破壊していない限り)サイトのフロントエンドは、より長期間、問題なく表示されることがほとんどです。
このエラーの発生時に、訪問者がサイトにアクセスしようとすると、ログにHTTPステータスコード 500が生成されます。これは、内部サーバーエラーで、サーバーで何らかの問題が発生し、要求されたリソースが配信されなかったことを意味します。正常に動作している場合は、リクエスト成功を意味するHTTPステータスコード 200が表示されます。
Kinstaを利用している場合、MyKinstaの分析機能で500番台エラーの内訳を見て、発生頻度を確認することもできます。
「データベース接続確立エラー」の主な原因
では、「データベース接続確立エラー」を引き起こす原因はなんでしょうか。この章では、このエラーを引き起こす一般的な事例をいくつかご紹介します。また、それぞれの原因を掘り下げ、解決方法もみていきましょう。このエラーは大体15分以内に解決することが可能です。
- データベースへのログイン認証情報が正しくない(最も一般的)─WordPressサイトがMySQLデータベースに接続する際は、個別のログイン情報が使われます。
- データベースが破損している─テーマの変更やプラグインのインストール・削除などを頻繁に行うと、データベースが破損する場合があります。これには、テーブルが見つからない、特定のテーブルが破損してしまっている、あるいは一部の情報が誤って削除されてしまったなどの原因が考えられます。
- WordPressファイルが破損している─時折ハッキングによって起こる場合があります。
- データベースサーバーに問題がある─アクセス数の急増によるデータベースの過負荷や、同時接続が多すぎて応答しないなど、ウェブサーバー側で何らかの問題が発生している場合があります。共用サーバーを利用している場合は、複数のユーザーが1つのサーバーで同じリソースを使用するため、よくみられる事例です。
- トラフィックが急増した─使用しているサーバーによっては、多くの同時接続数に限りがあり、データベース接続を処理できない場合があります。そのため、トラフィックが増加すると、データベースで一時的な問題が発生することがあります。
「データベース接続確立エラー」の解決方法
トラブルシューティングを行う前に、万が一に備えてWordPressサイトのバックアップを取っておきましょう。これからご紹介する手順の多くは、データベースの情報を操作することになります。このエラーに限らず、WordPressサイトのトラブルシューティングを行う前には、どれほどWordPressに精通していても必ずバックアップを取ることをお勧めします。
VaultPressやWP Time Capsuleなど、人気のあるWordPressバックアッププラグインを使用すれば、ファイルやデータベースのバックアップを作成することができます。
Kinstaを利用している場合は、ワンクリックのバックアップ機能を活用することができます。MyKinstaからWordPressサイトを選択し、「バックアップ」>「今すぐバックアップ」をクリックすれば完了です。
また、本番環境またはステージング環境にバックアップを復元する機能もあります。もしくは、phpMyAdminを使用して、MySQLデータベースをバックアップすることも可能です。バックアップが完了したら、早速「データベース接続確立エラー」を修正していきましょう。
1. データベースへのログイン認証情報を確認
まず最初に、データベースのログイン認証情報を確認しましょう。このエラーを引き起こす最も一般的な原因は、誤った認証情報にあります。特に、サーバーを乗り換えた直後は要注意。WordPressサイトの接続情報は、WordPressサイトのルートにあるwp-config.phpファイルで確認できます。
接続の確立には、以下の4つの情報が正しくなければいけません。
データベース名
// ** MySQL settings ** //
/** The name of the database for WordPress */
define('DB_NAME', 'xxxxxx');
ユーザー名
/** MySQL database username */
define('DB_USER', 'xxxxxx');
パスワード
/** MySQL database password */
define('DB_PASSWORD', 'xxxxxxxxx');
データベースホスト名(サーバー名)
/** MySQL hostname */
define('DB_HOST', 'localhost');
wp-config.phpファイルにアクセスするには、SFTPでサイトに接続し、サイトのルートに移動します。cPanelを使用している場合は、「ファイルマネージャー」をクリックして、サイトのルートを参照し、右クリックでファイルを編集することができます。
以下は、wp-config.phpファイルの表示例です。
ファイル内にある情報とサーバー上の情報を照らし合わせて、一致するか確認します。以下、cPanelを使用する場合とKinstaを利用している場合、それぞれの手順をご説明します。
cPanelでデータベースの認証情報を確認
最初に確認するのは、データベース名です。cPanelの「データベース」セクションからphpMyAdminにログインします。
左側の一番下にデータベース名が表示されます。information_schemaデータベースは、サーバー運営側で使用するものなので無視しましょう。この名前をwp-config.phpファイルのDB_NAMEと照らし合わせます。一致する場合は問題ありませんが、もし一致しない場合は、wp-config.phpファイルの中身を編集する必要があります。
別の確認方法として、WordPressサイトのURLが表示されていれば、正しいデータベースであることがわかります。これには、データベースを選択し、「wp_options」テーブルをクリックします(セキュリティ上の理由から、wpxx_optionsのように若干表記が異なる場合があります)。テーブルの一番上にあるサイトのURLと名前が現在のサイトと一致すれば、OKです。
データベース名が一致しているにもかかわらず、「データベース接続確立エラー」のメッセージが表示されている場合は、ユーザー名とパスワードの確認も必要です。WordPressサイトのルートディレクトリにPHPファイルを作成して、以下のコードを入力してください。ファイル名は、checkdb.phpなどの任意の名前を付けます。「db_user」と「db_password」を、wp-config.phpファイルの情報に変更してください。
<?php
$test = mysqli_connect('localhost', 'db_user', 'db_password');
if (!$test) {
die('MySQL Error: ' . mysqli_error());
}
echo 'Database connection is working properly!';
mysqli_close($testConnection);
次に、WordPressサイト上のファイル「https://yourdomain.com/checkdb.php」に移動します。「MySQL Error: Access denied(アクセス拒否)」と表示される場合は、ユーザー名またはパスワードが間違っているため、次の手順に進んで、認証情報をリセットしてください。
以下のように「Database connection is working properly(データベース接続は正常に動作しています)」というメッセージが表示されれば、正常です(とはいえ、このメッセージが表示されていれば、そもそもこのエラーは発生していない)。この確認を終えたら、先ほど作成したファイルを忘れずに削除してください。
次に、ユーザー名とパスワードをリセットします。cPanelの「データベース」セクションの「MySQLデータベース」をクリックします。
下にスクロールして、MySQLユーザーを作成します。ユーザー名とパスワードは、簡単に推測されることのない複雑なものを選びましょう。パスワード生成ツールを使用すると便利です。それから、「ユーザーの作成」をクリックします。または、この画面で現在のデータベースユーザーのパスワードを変更することも可能です。
下にスクロールして、作成したユーザーをデータベースに追加します。次の画面でユーザー権限の設定を行います。「すべての権限」にチェックを入れてください。
次に、作成した認証情報をwp-config.phpファイルに反映させるため、DB_USERとDB_PASSWORDの値を変更します。任意で、先ほどのテストファイルを再実行することもできます。これで、認証情報の問題は解決するはず。まだエラーメッセージが表示される場合は、サーバー名(DB_HOST)が間違っている可能性があります。サーバーによっては、この情報が異なることがあります。
一般的なデータベースホスト名はこちらから確認できますが、ほとんどの場合は、localhostです。不明な場合は、使用しているサーバーに問い合わせるか、サーバーの資料をお確かめください。localhostの代わりに127.0.0.1が使われている可能性があります。
上記の手順をすべて実行しても、「データベース接続確立エラー」が解決しない場合は、次のトラブルシューティングに進んでください。
Kinstaでデータベース認証情報を確認
Kinstaを利用している場合、wp-config.phpファイルとサーバーの認証情報の確認は非常に簡単です。サイトを選択し、「情報」に進むと、「データベース名」、「データベースのユーザー名」、「データベースのパスワード」が表示されます。
次に、「情報」画面で確認した認証情報をwp-config.phpファイルに反映させるため、DB_USERとDB_PASSWORDを変更します。これで、認証情報の問題は解決するはずです。この認証情報をリセットする必要がある場合は、Kinstaのカスタマーサポートまでお問い合わせください。この操作を行っても、まだ「データベース接続確立エラー」のメッセージが表示されている場合には、次のトラブルシューティングに進んでください。
2. 破損したWordPressデータベースを修復
もしくは、データベースが破損している可能性があります。これは、プラグインやテーマのインストール・削除などの操作によって、何百ものテーブルが徐々に追加・削除されることが原因で、稀に発生します。WordPressサイトの管理画面へのログイン時、次のようなエラーが表示される場合には、データベースが破損しています。「One or more database tables are unavailable. The database may need to be repaired(1つまたは複数のデータベーステーブルが使用できません。データベースの修復が必要かもしれません)」なお、このエラーはバックエンドのみで表示されるメッセージで、フロントエンドでは、「データベース接続確立エラー」と表示されます。
WordPressにはデータベースを修復する機能があります。wp-config.phpファイルの最下部に以下のコードを追加してください。
define('WP_ALLOW_REPAIR', true);
次に、WordPressサイトの「https://yourdomain.com/wp-admin/maint/repair.php」に移動すると、「Repair Database(データベースの修復)」または「Repair and Optimize Database(データベースの修復・最適化)」のどちらかを選ぶことができます。今回は、エラーのトラブルシューティングが目的なので、前者を選びましょう(作業時間が短くなります)。
「Repair Database」を実行した後は、誰かがこのページにアクセスすることのないよう、先ほどwp-config.phpファイルに追加したコードを必ず削除してください。また、cPanelを使用している場合は、「MySQLデータベース」画面で修復を実行することも可能です。
あるいは、phpMyAdminで修復することもできます。phpMyAdminにログイン後、「データベース」をクリックし、すべてのテーブルを選択します。そして、ドロップダウンメニュー「チェックしたものを:」から、「テーブルを修復する」を選ぶと、REPAIR TABLEのコマンドが実行されます。
最後に、WP-CLIを使用し、以下のコマンドで修復を実行するという方法もあります。
wp db repair
この方法の詳細については、WordPress開発者向けリソースをご覧ください。
データベースを最適化したい場合は、パフォーマンス向上のためWordPressのリビジョンを最適化する方法と、MyISAMテーブルをInnoDBに変換する方法をご覧ください。この操作を行ってもまだ問題が解決されない場合は、次のトラブルシューティングに進んでください。
関連記事:WordPressの「MySQL Server Has Gone Away」エラーの処理方法
3. 破損したWordPressファイルの修復
「データベース接続確立エラー」が起こる別の原因として、WordPressのコアファイルが破損していることも考えられます。破損の原因には、FTPによるファイル転送の問題、サイトのハッキング、サーバー側の問題などがあり、このいずれであっても修復は可能です。なお、この作業を行う前に、サイトのバックアップは取っておきましょう。
これは、サイトのWordPressコアファイルを新しいものに入れ替える作業になります。プラグインやテーマ、メディアはそのままで、WordPress自体を一新します。
.htaccessやwp-config.phpなどのファイルに加えた変更やカスタムコードは失われる可能性がありますが、バックアップしたファイルを使用すれば、後で復元が可能です。
まずは、WordPress.orgからWordPressをダウンロードします。
ダウンロードしたファイルを解凍します。その後、wp-contentフォルダとwp-config-sample.phpファイルを削除してください。
SFTP経由で残りのファイルをサイトにアップロードし、既存のファイルを上書きします。これで、問題のある可能性のあるファイルがすべて置き換えられます。この作業を行った後は、ブラウザのキャッシュをクリアすることをお勧めします。それから、WordPressサイトを確認して、エラーメッセージが表示されるかを確認しましょう。
4. データベースサーバーに問題がないかを確認
上記の操作を行っても問題が解決しない場合は、おそらくデータベースサーバーに問題があるため、利用しているサーバーに問い合わせてください。例えば、多くのサーバーでは、最大同時接続数が決まっており、この接続数を超えてしまっているせいで、エラーが発生している可能性があります。キャッシュプラグインを活用すれば、データベースへの接続回数を最小限に抑えることができます。Kinstaを利用している場合は、高速なサーバーレベルのキャッシュ機能があるため、プラグインは不要です。
これは、他のユーザーがサイトに影響を与える可能性があるからで、共用サーバーではよくみられる問題です。共用サーバーの場合、同じサーバーを利用するすべてのユーザーが、同じリソースを使うことになります。Kinstaのような高性能マネージドWordPressホスティングを使用すれば、このような問題に悩まされることはありません。さらに、WordPressサイトへの大量のトラフィックを処理できるように管理されています。
MyKinstaの右下に表示されるアイコンをクリックすれば、知識豊富なKinstaのカスタマーサポートにいつでもお問い合わせ可能です。24時間年中無休のサポート体制で、英語、スペイン語、フランス語、イタリア語、ポルトガル語など多言語に対応しています。
5. 最新のバックアップを復元
最終手段として、バックアップに頼るのも1つの手です。最後にバックアップを取った時点から更新していない、もしくはデータが失われても問題ない場合は、これが一番手軽な問題解決方法でしょう。多くのサーバーに、バックアップ復元機能があります。なお、場合によっては、データベースとファイル両方の復元が必要になります。
Kinstaを利用している場合は、サイトの「バックアップ」画面から、サイトのバックアップを瞬時に復元することができます。復元したいバックアップを選んで、「復元先選択」をクリックします。その後、「ステージング」環境と「本番」環境のどちらに復元するかを選択します。
その後、「バックアップ復元の確認」画面でサイト名を入力し、「バックアップを復元」をクリックします。また、復元時にもバックアップが作成されるため、必要に応じて復元を取り消すことも可能です。
まとめ
このように、WordPressの「データベース接続の確立エラー」を解決する方法は複数あります。このエラーの最も一般的な原因は、wp-config.phpファイル内の無効な認証情報です。そのため、認証情報が正しいかどうかを確認することから始めることをお勧めします。サイトのダウンは、なんとしても避けたいものです。
今回ご紹介した方法のいずれかを実行すれば、問題は解決されるはずです。そして、必要になれば、バックアップを使っていつでもサイトを復元できることをお忘れなく。
サイトに「データベース接続の確立エラー」というメッセージが表示されたことはありますか?どのように解決されましたか?以下のコメント欄で、ぜひお聞かせください。
コメントを残す