データベース接続確立エラーの原因と対処法

WordPress個別サポート

データベース接続確立エラー(Error establishing a database connection)はよくあるWordPressトラブルの1つで、「WordPressがデータベースに接続できなくなった」という意味のエラーです。画面にエラーメッセージが表示され、サイトやダッシュボードにアクセスできなくなります。

突然発生することもあるデータベース接続確立エラー
突然発生することもあるデータベース接続確立エラー

何らかの理由でWordPressの設定ファイル(wp-config.php)と実際のデータベースのログイン情報が一致しなくなったときに発生します。

設定の記述ミスやサーバーの障害など、いくつかの原因が考えられます。ここでは、データベース接続確立エラーが発生する仕組みや定番の原因およびレンタルサーバー(さくらインターネット・ロリポップ・エックスサーバー)ごとに対処法を説明します。

データベース接続確立エラーの仕組み

データベース接続確立エラーが発生した場合、設定ファイル(wp-config.php)を修正するのが定番ですが、このファイルの役割もピンとこないかもしれないので、まずは、「データベース接続確立エラー」が発生する仕組みを説明します。

大前提としてWordPressはデータベースと連携して動作しています。「データベースって何?」がピンとこない方は、「管理画面からの入力内容を保存する箱」だと思ってください。

管理画面から入力した投稿や固定ページの内容は「データベース」という箱に保存されます。

管理画面からの入力内容はデータベースに保存される
管理画面からの入力内容はデータベースに保存される

データベースには誰でも自由にアクセスできるわけではありません。そのような状態だと自由にイタズラされてサイトがメチャクチャになってしまいます。そのため、不正なアクセスは遮断する必要があります。

データベースへの不正なアクセスは遮断
データベースへの不正なアクセスは遮断

不正なアクセスを遮断するには、データベースに鍵をかけるのが一般的です。具体的には、そのデータベースを使えるユーザーやパスワードを決めておいて照合する方法です。

ユーザーやパスワードでデータベースに鍵をかける
ユーザーやパスワードでデータベースに鍵をかける

これにより、データベース設定を知っている人だけがデータベースにアクセスできるようになります。

正しいデータベース情報を知っている人のみアクセス可能に
正しいデータベース情報を知っている人のみアクセス可能に

データベースを使うためアクセスすることを「データベースに接続する」といい、ユーザー名やパスワードが一致してデータベースが使用可能になった状態を「データベース接続が確立された」といいます。

データベース接続が確立された状態
データベース接続が確立された状態

データベースに接続した際にユーザー名やパスワードが間違っていて使用許可が得られないと、データベース接続が確立できない状態になります。つまり、WordPress的に言えばデータベース接続確立エラーとなります。

データベース接続確立エラーになる
データベース接続確立エラーになる

データベース接続確立エラーの原因

データベース接続確立エラーの原因はさまざまで、単純なミスから意外なものまであります。

データベース接続情報が間違っている

最も多い原因は設定ファイル(wp-config.php)に書かれたデータベース接続情報が間違っていることです。

wp-config.phpのデータベース接続情報が間違っているとエラーになる
wp-config.phpのデータベース接続情報が間違っているとエラーになる

WordPressが設置されたサーバー側ではデータベースのログイン情報が決まっています。そのデータベースを使う場合、WordPressの設定ファイル(wp-config.php)でデータベース接続情報を指定する必要があります。

たとえば、wp-config.phpに次のように指定されています。

// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'abcd1234');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'abcd1234');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'abcd1234');

/** MySQL のホスト名 */
define('DB_HOST', 'mysql9999.example.com');

主にこれらの4項目(データベース名・ユーザー名・パスワード・ホスト名)がサーバー側の設定と異なっているとデータベース接続確立エラーになります。

対処方法はレンタルサーバー別に後述します。

wp-config.phpの文法ミス

上記のデータベース設定は間違っていないのにエラーが発生する場合、入力したコードの文法ミスが考えられます。

たとえば、次のコードはデータベース接続確立エラーが発生します。どこが間違っているでしょうか。

define( 'DB_HOST', ’localhost’ );

答えは「半角で入力すべき文字が全角で入力されている」です。具体的には「localhost」を囲む半角のシングルクォーテーション ' が全角の になっています。

引っ掛け問題のようですが、実際に間違いに気づかずWordPress個別サポートに相談される方が結構います。ご注意ください。

データベースのパスワードを変更した場合

セキュリティを強固にするためなどの理由で、レンタルサーバーのツールを使ってデータベースのパスワードを変更することがあります。

データベースパスワードの変更
データベースパスワードの変更

その場合、サーバー側のパスワード設定のみが変更されます。つまり、「wp-config.phpの設定=サーバーの設定」という正常な「データベース接続」が崩れてしまいます。

ですから、パスワードを変更した場合はwp-config.phpに記述されたパスワードも変更する必要があります。

それを忘れてしまうと、もれなくデータベース接続確立エラーになります。

「昨日まで問題なかったのに急にデータベース接続確立エラーが発生した!」の多くの原因はこれです。何もしていないのにトラブルが発生したと思ってしまうかもしれませんが、パスワード変更が原因になったのに気づかなかったというだけです。

よくあるパターンなので注意してください。

というのは、「データベースのパスワードが簡単すぎるからセキュリティを考慮して難しい文字に変更しよう」と思うことはよくあるからです。セキュリティを強固にする点では良いことだと思いますが、wp-config.phpの修正を忘れないようにしましょう。

このパターンで注意が必要なのは、同じユーザー(パスワード)を使っているサイトがすべてエラーになる点です。

該当するサイトのwp-config.phpをすべて修正する必要があります。

特に、さくらインターネットなど、同じデータベースユーザーを無意識のうちに複数サイトで使い回せるようになっているレンタルサーバーでは注意してください。1箇所のパスワード変更が複数サイトに影響する可能性があります。

対処としては次のいずれかです。

  • パスワード変更ツールで元のパスワードに戻す
  • 全サイトのwp-config.phpを開いてパスワードを修正する

後者の方が無難ですが、サイトが膨大で全てのwp-config.phpを直すのが面倒な場合は、前者のようにパスワードを元に戻すのが現実的かもしれません。

サイトを別のサーバーに引っ越したとき

サイトを別のサーバーに引っ越した場合、wp-config.phpのデータベース設定の書き換えが必要です。それを忘れるとデータベース接続確立エラーになります。

よくあるのがBackWPupプラグインで作成したバックアップをダウンロード、解凍して新たなサーバーにアップロードした場合です。wp-config.phpのデータベース接続情報は移転元の古いサーバーの情報になっているので変更しないとエラーになります。

それ以前に新たなサーバーでデータベースを作成する必要がありますが。

ただし、All-in-One WP Migrationのようなプラグインを使ってサーバーを移転した場合は基本的にはwp-config.phpの書き換えは必要はありません。エラーは起きていないはずです。

マルチサイトのURLを変更した場合

マルチサイトでWordPressのURLを変更したときに作業が不完全だとデータベース接続確立エラーになります。

たとえば、「http://example.com/wp1」のようサブフォルダに作成したマルチサイトをルート(http://example.com/)で表示できるようにする場合、ルートのindex.phpの最終行を次のように変更するかもしれません。

・変更前
require( dirname( __FILE__ ) . '/wp-blog-header.php' );

・変更後(フォルダ名「wp1」を付加)
require( dirname( __FILE__ ) . '/wp1/wp-blog-header.php' );

この時点で「wp1」を削除したURL(例:http://example.com/)はデータベース接続確立エラーになります。

マルチサイトのURLを変更する場合、次のような作業が必要です。

マルチサイトのURL変更(ファイル)
  • index.phpをルートフォルダにコピーして最終行にフォルダ名を付加
  • .htaccessをルートフォルダにコピー
  • wp-config.phpのPATH_CURRENT_SITEからフォルダ名を削除
マルチサイトのURL変更(データベース)
  • wp_blogsテーブル
    • メインサイト・サブサイトからフォルダ名を削除
  • wp_siteテーブル
    • メインサイトのフォルダ名を削除
  • wp_optionsテーブル
    • メインサイトのhomeからフォルダ名を削除
    • サブサイトのsiteurl・homeからフォルダ名を削除
  • wp_sitemetaテーブル
    • siteurlからフォルダ名を削除
データベース変更を間違えるとサイトが機能しなくなります。ご注意ください。

サイトがハッキング被害にあった場合

少し怖い原因ですが、サイトがハッキングや改ざんの被害にあった場合、一時的にサーバーに異常な負荷がかかることがあります。その場合、レンタルサーバーは負荷を軽減するため、そのサイトが動作しないように強制的にサイトを停止する場合があります。

たとえば、wp-config.phpをwp-config.php.suspectedのような名前に変更したりパーミッションを000(何もできない権限)に変更します。これにより、WordPressは動作しなくなりサーバーへの負荷も軽減されますが、言うまでもなくデータベース接続確立エラーになります。

この場合、データベース設定の4項目は間違っていませんが、そもそもwp-config.phpが存在しないのでエラーになります。とはいえ、安易にファイル名をwp-config.php.suspectedからwp-config.phpに戻すのは危険です。

被害を受けたサイト自体をきれいに修復しないと、データベース接続確立エラーが解消しても再度レンタルサーバーからサイト停止の措置をとられるでしょう。

このケースでは一般的にWordPressのシステムを入れ替えることになりますが、話が長くなるのでここでは説明を省略します。お困りのときはWordPress個別サポートで対応いたしますのでご相談ください。

このような原因でデータベース接続確立エラーが発生した場合、「何もしていないのにある日突然エラーが発生!」となりますが、このような事情です。

XAMPPやMAMPでMySQLを起動していない

XAMPPやMAMPのようなツールを使ってローカル環境でWordPressを動作させる場合、MySQLを起動していないとWordPressを実行できません。これもデータベース接続確立エラーになります。対処法は簡単で、XAMPPやMAMPのコントロールパネルで「Start」ボタンをクリックしてMySQLサーバーを起動させましょう。

MySQLが起動していない
MySQLが起動していない

データベースサーバーの障害

まれにですが、データベースサーバーに障害が発生したり、緊急メンテナンスなどで使用不可となっている場合にデータベース接続確立エラーとなります。

サイトへの急激なアクセス集中によって一時的にサーバーエラーが発生している可能性もあります。そのような可能性があるサイト(例:トレンドブログ)は注意してください。

一時的なサーバーエラーの場合、特別な対処は必要なく、時間がたてば復旧するはずです。

エラーが頻発する場合は念のため使用中のレンタルサーバーのサポートページでサーバーにトラブルが発生していないか確認しましょう。

さくらインターネット:メンテナンス・障害情報
エックスサーバー:障害・メンテナンス情報
ロリポップ:障害情報 / お知らせ
お名前.com:メンテナンス・障害情報

データベーステーブルが壊れている

データベース最適化プラグインで処理に失敗した場合などにデータベース(テーブル)が破損してしまうこともあります。その場合もデータベース接続確立エラーになる可能性があります。

データベース管理ツール「phpMyAdmin」でWordPressデータベースを開いたとき「使用中」と表示されるテーブルが壊れている可能性があります。

データベーステーブルが壊れた状態
データベーステーブルが壊れた状態

対処としてphpMyAdminなどを使って壊れているテーブルにcheck tableコマンドでチェックをかけ、「marked as crashed and should be repaired」(壊れているので修復が必要)のようなメッセージが表示された場合はrepair tableコマンドを使ったテーブル修復を検討してください。

※安易なコピーペーストでデータベースコマンドを実行すると別の問題を起こす場合があるので、ここでは具体的なコマンドは紹介しません。よくわからなければWordPressメールサポートにご相談ください。

iPhoneやAndroidでエラーが発生する場合

PCでは問題ないのにiPhoneやAndroidなどスマホのみでデータベース接続確立エラーが発生する場合、キャッシュプラグインを疑ってみてください。

PC画面ではキャッシュを表示し、スマホではキャッシュを表示しない設定になっていると、PCとスマホでエラー発生状況が異なってきます。この場合、キャッシュを見ていないスマホの状態が現状を示しているのでエラーの対処が必要です。

データベース接続確立エラーの対処法

データベース接続確立エラーの対処方法を説明します。それは、サーバーと設定ファイル(wp-config.php)のデータベース設定を一致させることです。

設定の4項目(データベース名・ユーザー名・パスワード・データベースホスト名)を確認しましょう。

まず、設定ファイル(wp-config.php)のデータベース設定を確認します。このファイルはWordPressをインストールしたフォルダに存在します。FTPソフトまたはレンタルサーバーのFTPツールで開きましょう。

主なレンタルサーバーのFTPツールは次のようにアクセスします。

  • エックスサーバー --- ファイルマネージャまたはインフォパネルの「ファイル管理」
  • ロリポップ --- ユーザー専用ページの「ロリポップFTP」
  • さくらインターネット --- サーバコントロールパネルのファイルマネージャー
さくらインターネットのファイルマネージャでwp-config.phpを開く例
さくらインターネットのファイルマネージャでwp-config.phpを開く例

wp-config.phpの30行目あたりにある「MySQL 設定」以下の4項目がデータベースを使うための設定です。

// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'abcd1234');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'abcd1234');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'abcd1234');

/** MySQL のホスト名 */
define('DB_HOST', 'mysql9999.example.com');

「abcd1234」や「mysql9999.example.com」の文字がユーザーごとに異なるデータベース設定です。

「abcd1234」や「mysql9999.example.com」はサンプルです。実際は違う文字が入っています。

このデータベース名、ユーザー名、パスワード、ホスト名の4項目をサーバーの設定と一致させる必要があります。

サーバーのデータベース設定はレンタルサーバーの管理画面からチェックできるようになっているのが一般的です。主なレンタルサーバーの例を紹介します。

エックスサーバーの場合

エックスサーバーではサーバーパネルにログインして、「MySQL設定」メニューを開くと、データベース名とユーザー名を確認できます。

MySQLのデータベース名とユーザー名
MySQLのデータベース名とユーザー名

画面を下にスクロールすると、MySQLのホスト名を確認できます。

MySQLのホスト名
MySQLのホスト名

これらの内容がwp-config.phpの記述と一致しているか確認してください。

パスワードは確認できませんので、設定した内容を思い出してwp-config.phpの設定と照合しましょう。

パスワードを忘れてしまった場合は「MySQLユーザー一覧」から変更することができます。

MySQLユーザーのパスワード変更
MySQLユーザーのパスワード変更
ユーザーパスワードを変更すると、同じユーザーパスワードを使っているサイトに影響し、すべて「データベース接続確立エラー」になる可能性があるので十分に注意して変更してください。

さくらインターネットの場合

さくらインターネットではサーバコントロールパネルにログインして、「Webサイト/データ」の「データベース」メニューを開くとデータベース名、ユーザー名、データベースサーバを確認できます。「データベースサーバ」とはwp-config.phpの「MySQLのホスト名」のことです。

さくらインターネットのデータベース設定
さくらインターネットのデータベース設定

これらの内容がwp-config.phpの記述と一致しているか確認してください。

パスワードは確認できないので、忘れてしまった場合は「接続パスワード変更」の「変更」ボタンから変更しましょう。ただし、同じユーザー(パスワード)を使っているサイトに影響するので安易な変更は厳禁です。

ロリポップの場合

ロリポップではユーザー専用ページにログインして「サーバーの管理・設定」‐「データベース」メニューを開くとデータベース名、ユーザー名、データベースホスト名を確認できます。

ロリポップのデータベース設定
ロリポップのデータベース設定

パスワードを確認するには「操作する」ボタンをクリックして「パスワード確認」を開きます。これらの内容がwp-config.phpの記述と一致しているか確認してください。

「パスワード再設定」からパスワードを変更することもできます。ただし、同じユーザー(パスワード)を使っているサイトに影響するので注意が必要です。

パスワード確認・再設定
パスワード確認・再設定

まとめ

このように、サーバーとwp-config.phpのデータベース設定が一致しないとデータベース接続確立エラーが発生しますが、前述のようにその事情はさまざまです。パスワード変更時やサイト移転時にデータベース設定を変更し忘れる単純ミスのこともありますがハッキング被害のように深刻な原因もあります。原因をしっかり見極めて対処するようにしましょう。

特にwp-config.phpのデータベース設定の4項目(データベース名・ユーザー名・パスワード・データベースホスト名)が重要です。確認してみてください。

WordPressトラブル