MENU

DB接続エラーの直し方:WordPressで「データベースに接続できない」ときの確認手順

DB接続エラーの直し方:WordPressで「データベースに接続できない」ときの確認手順

DB接続エラーの直し方:WordPressで「データベースに接続できない」ときの確認手順

WordPress や Web アプリで「Cannot connect to database」「Error establishing a database connection」のような表示が出たとき、最初に見るべき場所はコード本体ではなく、接続情報・DBサーバーの起動状態・権限です。

このエラーは、PHP や WordPress がデータベースへ問い合わせる前の段階で止まっている状態です。投稿データや設定が消えたとは限りません。慌てて再インストールする前に、接続経路を順番に切り分けます。

この記事では、WordPress を例にしながら、DB接続エラーで最低限確認するポイントを実務向けに整理します。

  • まず wp-config.php の DB名・ユーザー名・パスワード・ホスト名を確認する
  • 次に MySQL / MariaDB が起動しているか、サーバー側から接続できるかを見る
  • 最後にユーザー権限、ホスト指定、ポート、ログを確認する
  • 認証情報は画面共有・チャット・ログにそのまま貼らない
目次

前提環境:この記事で扱う範囲

この記事は、WordPress を中心に、PHP アプリや管理画面つき CMS でよく見る DB 接続エラーを対象にします。

想定する環境は次の通りです。

  • WordPress サイト
  • MySQL または MariaDB を使うレンタルサーバー、VPS、ローカル開発環境
  • wp-config.php を確認できる権限がある
  • SSH、サーバーパネル、phpMyAdmin など、いずれかの確認手段がある

WordPress 公式ドキュメントでは、wp-config.php は WordPress の基本設定を持つ重要なファイルで、データベース接続情報もここに含まれると説明されています。つまり WordPress の DB 接続エラーでは、まずこのファイルが起点になります。

ここがポイント: DB接続エラーは「WordPressの投稿が壊れた」という意味ではありません。多くの場合、WordPress から DB サーバーへ入るための住所、鍵、権限のどこかが合っていません。

まず見るべき4つの接続情報

DB接続エラーの初動では、原因を広げすぎず、wp-config.php の4項目を確認します。

WordPress では、代表的に次のような定義があります。

/** The name of the database for WordPress */
define( 'DB_NAME', 'example_db' );

/** Database username */
define( 'DB_USER', 'example_user' );

/** Database password */
define( 'DB_PASSWORD', 'example_password' );

/** Database hostname */
define( 'DB_HOST', 'localhost' );

それぞれの意味は単純です。

  • DB_NAME: 接続先のデータベース名
  • DB_USER: データベースに入るユーザー名
  • DB_PASSWORD: そのユーザーのパスワード
  • DB_HOST: データベースサーバーの場所

よくある間違い

特に多いのは、移行や複製のあとに古い接続情報が残るケースです。

  • 本番サーバーへ移したのに、ローカル環境の DB 名が残っている
  • サーバーパネルで作った DB ユーザーと、wp-config.php のユーザー名が違う
  • パスワード再発行後に WordPress 側だけ更新していない
  • localhost ではなく、レンタルサーバー指定の DB ホスト名が必要
  • DB_HOST にポート番号が必要な環境なのに省略している

DB_HOST は環境差が出やすい項目です。一般的には localhost が使われますが、レンタルサーバーでは mysql.example.ne.jp のような専用ホスト名を指定することがあります。サーバーパネルの「MySQL設定」「データベース情報」に表示される値と照合してください。

接続確認はサーバー側から試す

設定ファイルを見ても原因が分からない場合は、WordPress を経由せずに DB へ直接接続できるかを確認します。

SSH が使える環境なら、次のように MySQL クライアントで試せます。

mysql -h localhost -u example_user -p example_db

-p の後にパスワードを直接書かず、プロンプトが出てから入力します。履歴やログにパスワードを残しにくくするためです。

接続できる場合は、次のようなプロンプトに入ります。

mysql>

接続できない場合は、エラーメッセージが切り分けの材料になります。

ERROR 1045 (28000): Access denied for user 'example_user'@'localhost'

この場合は、ユーザー名、パスワード、接続元ホスト、権限のどれかが合っていない可能性が高いです。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket

この場合は、MySQL サーバーが起動していない、ソケットやホスト指定が違う、コンテナや仮想環境の接続先が違う、といった方向で確認します。

ポートだけ確認したい場合

VPS や Docker 構成では、DB サーバーのポートに到達できるかを見るだけでも有効です。

nc -vz 127.0.0.1 3306

成功例は環境によって表示が違いますが、接続できれば succeededopen に近い結果になります。失敗する場合は、DB が起動していない、ポートが違う、ファイアウォールで止まっている、別コンテナ名を指定すべき、などを疑います。

原因別の見分け方

DB接続エラーは、表示だけ見ると同じに見えます。実務では「どこまで届いているか」で分けると早くなります。

症状よくある原因最初に見る場所
パスワード変更後に急に表示WordPress 側のパスワード未更新DB_PASSWORD
移行直後だけ表示DB名、ユーザー名、ホスト名の移行漏れwp-config.php とサーバーパネル
全サイトで同時に表示DBサーバー停止、メンテナンス、障害サーバー状態、ホスティングのお知らせ
一部の環境だけ表示接続元ホストの権限不足DBユーザーの権限、許可ホスト
Dockerやローカルだけ表示localhost の指す先が違うコンテナ名、ネットワーク設定

特に見落としやすいのは、localhost の意味です。WordPress が動いている場所から見た localhost は、その WordPress が動くサーバー自身を指します。Docker で PHP コンテナと MySQL コンテナが分かれている場合、localhost ではなく db のようなサービス名を指定する構成があります。

WordPressで確認する手順

ここでは、作業順を実務向けに並べます。重要なのは、変更する前に現在値を控えることです。

1. 画面のエラー文を確認する

まず、表示されているエラー文をそのまま確認します。

WordPress では、代表的に「Error establishing a database connection」と表示されます。日本語環境では「データベース接続確立エラー」のような表示になることもあります。

この時点で、プラグインやテーマを疑う前に DB 接続を見ます。テーマの PHP エラーなら別のメッセージやログになることが多いためです。

2. wp-config.php とサーバーパネルを照合する

wp-config.php の4項目を、サーバーパネルのデータベース設定と照合します。

確認する順番は次の通りです。

  • DB名が完全一致しているか
  • DBユーザー名が完全一致しているか
  • パスワードを変更した履歴がないか
  • DBホスト名がサーバー指定の値になっているか
  • 必要なら localhost:3306 のようにポート指定が必要か

パスワードは画面に表示されないこともあります。その場合は、既存値を推測せず、必要に応じてサーバーパネルで再設定し、wp-config.php 側も同じ値にそろえます。

3. DBサーバーの起動状態を見る

VPS などで管理者権限がある場合は、DB サーバーが起動しているかを確認します。

systemctl status mysql

MariaDB の場合は次の名前になっていることがあります。

systemctl status mariadb

レンタルサーバーでは systemctl を使えないことが多いため、サーバーパネルの障害情報やデータベース管理画面に入れるかを見ます。phpMyAdmin にも入れないなら、WordPress だけの問題ではなく DB 側の問題に近づきます。

4. ログを見る

WordPress 側のデバッグログやサーバーのエラーログも手がかりになります。

ただし、本番サイトでエラーを画面に表示する設定は避けます。WordPress 公式ドキュメントでも、公開環境ではエラーを画面に出すのではなくログへ送る考え方が示されています。

調査用に設定する場合の例です。

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

調査が終わったら、公開環境では設定を戻す、ログファイルの公開範囲を確認する、不要なログを削除する、といった後始末も必要です。ログにはパスや SQL、プラグイン名など、外部に見せたくない情報が含まれる場合があります。

NG例と改善例

DB接続エラーでは、急いでいるほど危ない対応をしがちです。よくある NG と、より安全な進め方を分けておきます。

NG例:WordPressを再インストールする

接続できないだけの状態で再インストールすると、既存データとの対応関係を壊すおそれがあります。

改善例は、先に wp-config.php と DB の存在を確認することです。DB に投稿テーブルが残っているなら、復旧すべき対象は「WordPress本体」ではなく「接続設定」です。

NG例:パスワードをチャットに貼る

認証情報をそのまま共有すると、後から履歴に残ります。

改善例は、伏せ字にして共有することです。

DB_USER: wp_example
DB_PASSWORD: 先頭2文字と末尾2文字だけ確認済み
DB_HOST: mysql.example.ne.jp

チームで作業する場合は、パスワードそのものではなく「サーバーパネルで再発行した」「設定ファイルへ反映した」「接続テストに成功した」という作業結果を共有します。

NG例:localhost を決め打ちする

localhost は便利ですが、すべての環境で正解ではありません。

改善例は、DB がどこで動いているかを見ることです。

  • 同一サーバーの MySQL: localhost の可能性が高い
  • レンタルサーバー指定の DB: 専用ホスト名を使うことがある
  • Docker Compose: MySQL サービス名を使うことがある
  • 外部DB: ホスト名、ポート、接続許可IPが必要になる

代替手段と関連ツール

接続情報の確認方法は、環境によって変わります。SSH が使えないから調査できない、というわけではありません。

  • サーバーパネル: DB名、ユーザー、ホスト名、パスワード再設定を確認しやすい
  • phpMyAdmin: DBが存在するか、ユーザーでログインできるかを確認しやすい
  • SSH + mysql コマンド: WordPress を通さず接続確認できる
  • WP-CLI: WordPress 側の設定や状態をコマンドで確認しやすい
  • Docker Compose: サービス名、ネットワーク、環境変数の確認が重要になる

初心者向けには、まずサーバーパネルと wp-config.php の照合が現実的です。SSH が使えるなら、mysql コマンドで WordPress の外側から接続確認すると、原因の場所をかなり絞れます。

復旧前に確認するチェックリスト

最後に、実際の作業で使える形にまとめます。

  • wp-config.php のバックアップを取ったか
  • DB_NAME はサーバーパネルの DB 名と一致しているか
  • DB_USER はその DB に権限を持つユーザーか
  • DB_PASSWORD は最新の値か
  • DB_HOST は環境に合っているか
  • MySQL / MariaDB は起動しているか
  • phpMyAdmin や mysql コマンドで直接接続できるか
  • ログを確認したあと、公開環境向けの設定に戻したか
  • パスワードやログを外部に貼っていないか

DB接続エラーで次に見るべき分岐点は、「WordPress だけが接続できないのか」「DB サーバー自体に入れないのか」です。前者なら wp-config.php と権限、後者なら DB の起動状態やサーバー側の障害を優先して確認します。

参照リンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次