WordPress「データベース接続確立エラー」解決ガイド|原因チェックリスト付き

WordPress「データベース接続確立エラー」解決ガイド|原因チェックリスト付き

WordPressサイトを運営する上で、最も焦るトラブルの一つが「データベース接続確立エラー」です。画面に表示される真っ白な画面は、訪問者の離脱だけでなく業務停止にもつながりかねません。このエラーは、認証情報の誤りサーバー稼働停止テーブル破損プラグイン干渉など多岐にわたる原因が考えられます。本記事では、初心者でも迷わず実践できるチェックリストと、上級者向けの自動化ツール活用法までを網羅的に解説。ステップごとに原因を切り分け、速やかな復旧をサポートします。さらに、原因究明後の再発防止策や監視・バックアップ自動化についても言及し、長期的なサイト安定運用を実現します。

wordpress保守サービス

1. 主要原因の即時チェック:wp‑config.php設定の確認

認証情報の場所と役割

WordPressがMySQLに接続する際、まず参照するのがサイトルート直下の wp‑config.php ファイルです。このファイルには以下の4つの定数が定義されています。

  • DB_NAME:データベース名
  • DB_USER:ユーザー名
  • DB_PASSWORD:パスワード
  • DB_HOST:ホスト名(通常は localhost127.0.0.1

これらが1文字でも異なっていると、WordPressはMySQLに到達できずエラーを返します。

設定編集の手順と注意点

  1. バックアップ取得
    まず、FTPや管理画面から wp‑config.php をローカルにダウンロードし、必ずバックアップを保持します。
  2. 編集方法
    テキストエディタ(VSCode, Sublime Text など)で開き、定義箇所を確認。特に引用符やセミコロンの抜け漏れに注意しましょう。

    define( 'DB_NAME',     'your_database_name' );
    define( 'DB_USER',     'your_db_user' );
    define( 'DB_PASSWORD', 'your_password' );
    define( 'DB_HOST',     'localhost' );
  3. ホスト名のチェック
    • 共用レンタルサーバーの場合:ほとんどが localhost
    • VPSやクラウド環境の場合:MySQL専用サーバーのIPアドレスやドメインを指定。
  4. 特殊文字のエスケープ
    パスワードに シングルクォート(’)バックスラッシュ(\) が含まれる場合、必ずエスケープ(例:O'Reilly)を行わないと構文エラーになります。

結論:誤設定の多くはここが原因
理由:WordPress起動時に最初に読み込まれるファイルであり、一致しないと即座に接続不能となるため
具体例:某ホスティングで、パスワード末尾に「!」を付与していたため接続に失敗。エスケープを適用したところ即復旧した事例あり。

2. サーバー稼働・権限トラブルの切り分け

サーバーステータス確認

WordPressがデータベースに接続できないケースのうち、認証情報に問題がないにもかかわらずエラーが出る場合、MySQLサーバー自体が停止または過負荷になっている可能性があります。

結論:まずはDBサーバーの稼働状況を確認し、MySQL(またはMariaDB)が正常に動作しているかをチェックすべきです。
理由:サーバーがダウンしていると、いくら設定が正しくても接続要求を拒否してしまうため。
具体例:ある共有ホスティングで夜間バッチ処理によって一時的に接続数がピークを超え、MySQLがクラッシュ。再起動後に復旧した事例あり。

ステータス確認手順

  1. ssh your_user@your_server_ip で SSH ログイン。
  2. sudo systemctl status mysql で MySQL サービス状態確認。
  3. mysqladmin -u root -p status で同時接続数やクエリ数をチェック。
  4. free -m / df -h / top でリソース使用状況を確認。

phpMyAdminでの権限設定

MySQLサーバーが動作しているにもかかわらず接続エラーが出る場合、ユーザー権限の設定ミスが原因であることがあります。

結論:phpMyAdminなどで該当ユーザーに適切な権限が付与されているかを検証する。
理由:必要権限がないと、接続直後に“Access denied for user”エラーが発生するため。
具体例:開発環境から本番環境へユーザーを移設する際、権限付与を忘れてエラー発生した事例あり。

cPanelの場合

  1. cPanelダッシュボードの「MySQL® Databases」>「Current Users」を開く
  2. 対象ユーザーの「Privileges」をクリックし「All Privileges」をチェック後、Save

Pleskの場合

  1. Pleskの「Databases」>対象データベースを選択
  2. 「Users」タブから対象ユーザーの「Edit Privileges」を選び必要権限を付与

3. データベースの破損・リカバリ手順

WordPressのデータベースは日々の操作で多くのテーブル変更が行われるため、不適切なシャットダウンやプラグインのバグでテーブル破損が起こりやすく、接続エラーの原因となります。

結論:phpMyAdminまたはWP‑CLIを用いて修復を行い、正常状態へ戻す必要があります。
理由:破損したテーブルは読み書き異常を起こし、接続エラーを継続させるため。
具体例:停電後にMyISAMテーブルが壊れ、phpMyAdminで修復後に復旧した事例。

3-1. phpMyAdminによるテーブル修復

  1. phpMyAdminにログインし、対象データベースを選択
  2. 全テーブルを選択し「修復テーブル」を実行
  3. 必要に応じて innodb_force_recovery を my.cnf に設定し段階的に修復

3-2. WP‑CLIでの自動修復スクリプト

#!/bin/bash
# WordPress DB 自動修復スクリプト
WP_PATH="/var/www/html"
LOG_FILE="/var/log/wp_db_repair.log"
echo "[$(date)] DB修復開始" >> ${LOG_FILE}
wp db repair --path=${WP_PATH} >> ${LOG_FILE} 2>&1
if [ $? -eq 0 ]; then
  echo "[$(date)] DB修復成功" >> ${LOG_FILE}
else
  echo "[$(date)] DB修復失敗。バックアップからのリストア検討" >> ${LOG_FILE}
fi

3-3. バックアップからの緊急リストア

  1. 最新バックアップ(backup.sql)を選定
  2. wp maintenance-mode activate で保守モードに切替
  3. mysql -u user -p database_name < backup.sql を実行
  4. テスト環境で検証後、保守モードを解除

4. 同時接続数・クエリ制限の緩和と監視

ピークトラフィック時やバッチ処理時に同時接続数超過でエラー発生するため、設定調整と監視が必要です。

結論max_connections等を適切に調整し、Datadog/New Relic/Prometheusで監視。
理由:接続上限超過時にDBが接続要求を拒否するため。
具体例:ECサイト大型セールで151接続を超過、設定変更後ダウン回避。

4-1. MySQL設定調整

SET GLOBAL max_connections = 300;
# my.cnf
[mysqld]
max_connections = 300
wait_timeout = 600
interactive_timeout = 600

4-2. クエリ最適化

スロークエリログを有効にし、pt-query-digestで解析。インデックス最適化を実施。

4-3. 監視ツール導入

  • Datadog:接続数やスロークエリ数をグラフ化しアラート設定
  • New Relic:APMでDBトランザクション可視化
  • Prometheus+Grafanamysqld_exporterでメトリクス収集

5. プラグイン・テーマ干渉の診断と対策

プラグインやテーマの不具合がDB操作を妨げ、接続エラーを誘発する場合があります。

結論:プラグイン・テーマを一つずつ切り分けて原因特定。
理由:根本原因を特定しないと再発リスクが高まるため。
具体例:カスタムフィールドプラグインがトランジェントを大量生成し接続プール枯渇。

5-1. プラグイン無効化フロー

  1. wp maintenance-mode activate
  2. wp plugin deactivate --all → エラー解消確認
  3. プラグインを一つずつactivateし再確認

5-2. 子テーマでの安全検証

  1. 子テーマを作成し、親テーマから切り替え
  2. functions.phpの直接クエリをチェック

5-3. デバッグログと例外キャッチ

  • Query Monitorでクエリ回数・エラーを可視化
  • WP_DEBUG_LOGでテーマPHPエラーを追跡

6. ホスティング固有機能・自動化ツールの活用

ホスティング提供の専用機能やスクリプトによる自動化で迅速対応と予防メンテナンスが可能です。

6-1. WP‑CLI活用例

wp db check
wp db repair
wp hostingsnap create --site=example.com
wp plugin rollback plugin-slug --version=1.2.3

6-2. ホスティングダッシュボード機能

Kinsta

  • Database Reconnect
  • One‑Click Restore
  • New Relic統合

ConoHa WING

  • インスタントバックアップ
  • 簡易データベース管理
  • WPツールキット

XSERVER

  • MySQL簡単設定
  • 自動バックアップ7世代
  • 診断レポートメール通知

6-3. 定期メンテナンススクリプト例

#!/bin/bash
# 定期メンテナンス
wp cache flush
wp db optimize
wp transient delete --all
wp hostingsnap create --site=example.com

7. チェックリストまとめ+次の一手(プロ依頼含む)

番号項目具体対応
1認証情報確認wp‑config.php の接続情報を点検
2ログ出力有効化WP_DEBUG_LOG とサーバーログを確認
3サーバーステータス確認systemctl status mysql などで稼働状況確認
4権限設定確認phpMyAdmin/スクリプトでDBユーザー権限を検証
5テーブル修復phpMyAdmin または wp db repair で修復
6バックアップリストア最新バックアップからのリストアを実施
7同時接続・クエリ最適化設定調整・スロークエリ解析で負荷軽減
8干渉診断プラグイン・テーマの切り分けテスト
9自動化メンテナンスWP‑CLIスクリプトをCron化
10監視・アラート設定Datadog/New Relic/Prometheusで監視

まとめ

WordPress の「データベース接続確立エラー」は、一見シンプルな認証ミスから、サーバー過負荷やテーブル破損、プラグイン干渉まで多彩な原因が潜んでいます。本記事でご紹介した10段階のチェックリスト自動化ツール活用により、初心者でも体系的に切り分け・復旧が可能です。再発防止のためには、定期的なバックアップ自動化監視体制の構築も必須です。今すぐ上記手順を実践し、サイト安定運用を達成しましょう。もしリソースが足りない場合は、専門サービスへのご相談もご検討ください。

社内にリソースがない。WPセンターへお任せ下さい

WPセンターの安心サポートは上場企業の実績多数のWordPress保守代行サービスです。

アップデートで不具合が起きても追加費用がかからず修正できるのはWPセンターだけ。予算ブレがなく利用し易いと大変好評いただいています。

WordPressサイト障害・エラー対応
WPセンターブログ | web担当者のためのWordPressガイド
タイトルとURLをコピーしました