WordPressデータベース接続確立エラーとは
~Error establishing a database connectionの原因と対処方法の解説~
技術情報
WordPressのインストール時や移行時あるいは運用時に「Error establishing a database connection」もしくは「データベース接続確立エラー」というメッセージがブラウザーに表示された場合の原因と対処法を、MySQLとは何か?から深く掘り下げたところまで解説していきます。トラブル時の参考になればと思います。
目次
この記事の目次です。
1. データベース接続確立エラーとは
1.1. ブラウザに表示されるWordPressのエラーメッセージ
1.2. Error establishing a database connectionと表示される場合もある
1.3. Error establishing a database connectionの意味
1.4. WordPressで使用するデータベースはMySQL
2. データベース接続確立エラーに関係するMySQLとは
2.1. データベースはデータの集まりのこと
2.2. MySQLはデータベースを管理するソフトウェア
2.3. データベース領域>テーブル>カラム>データという構成で管理する
2.4. データベース領域毎にMySQLアカウントが設定できる
3. WordPressレベルの原因判別と対処方法
3.1. wp-config.phpが定位置に置かれているか
3.2. wp-config.phpがPHPの文字コードの設定と同じか
3.3. wp-config.phpのデータベースの設定が正しいか
3.4. マルチサイトでドメイン設定に整合が起きていないか
4. MySQLレベルの原因判別と対処方法
4.1. MySQLのデータベース領域あるか
4.2. データベース領域で利用できるアカウントとなっているか
4.3. 認証方式が変わっていないか
5. OS/NWレベルの原因判別と対処方法
5.1. MySQLが稼働しているか
5.2. 通信を許可しているか
6. WordPressのデータベース接続確立エラー関連のログ
6.1. WordPressのデバックログ
6.2. MySQLのエラーログ
6.3. OSのsyslog(シスログ)
1. データベース接続確立エラーとは
記事で取り上げている「データベース接続確立エラー」とは何か簡単に触れます。
1.1. ブラウザに表示されるWordPressのエラーメッセージ
データベース接続確立エラーは、ブラウザに表示されるWordPressのエラーメッセージです。
1.2. Error establishing a database connectionと表示される場合もある
データベース接続確立エラーは、Error establishing a database connectionの表示の場合もあります。
1.3. Error establishing a database connectionの意味
Error establishing a database connectionは「WordPressがデータベースに接続できない状態」を意味するメッセージです。
1.4. WordPressで使用するデータベースはMySQL
WordPressの記事などのデータはデータベースに保存されます。 WordPressが使用するデータベースはMySQLです。
2. データベース接続確立エラーに関係するMySQLとは
WordPressが使用するデータベースはMySQLとは何か、初心者向けの解説になります。
2.1. データベースはデータの集まりのこと
データベースは、簡単にいうとデータの集まりのことをいいます。
2.2. MySQLはデータベースを管理するソフトウェア
MySQLは、サーバーにインストールして使用するデータベースを管理するソフトウェアです。
2.3. データベース領域>テーブル>カラム>データという構成で管理する
MySQLは、データベース領域>テーブル>カラム>データという構成で管理します。 データベース領域はWordPressインストール前に作成しておく必要があります。 テーブルとカラムはWordPressがインストール時に自動で作成されます。
2.4. データベース領域毎にMySQLアカウントが設定できる
MySQLのデータベース領域は個別にMySQLアカウントが設定できます。 WordPressは、MySQLのデータベース領域(DB_NAME)とMySQLアカウント(DB_USER、DB_PASSWORD)、MySQLがインストールされているサーバー(DB_HOST)を指定してMySQLに接続します。
3. WordPressレベルの原因判別と対処方法
WordPressレベルの原因判別と対処方法です。 MySQLのデータベース領域(DB_NAME)とMySQLアカウント(DB_USER、DB_PASSWORD)、MySQLがインストールされているサーバー(DB_HOST)はWordPressの設定ファイル(wp-config.php)に記述します。 wp-config.phpが正しく記述され、正しく設置されているかチェックする内容となっていますので、初級者でも扱えると思います。
3.1. wp-config.phpが定位置に置かれているか
wp-config.phpが定位置の<WordPress設置フォルダ>の直下にあるか確認します。 何らかの操作で削除してしまったり、名前を変更したままになっていたり、移動してしまったりしていないか確認します。
wp-config.phpが定位置にないようでしたら、データベース接続確立エラーの原因となりますので、WordPressがMySQLに接続できるよう、wp-config.phpを定位置に置かれるように対処します。
3.2. wp-config.phpがPHPの文字コードの設定と同じか
PHPの設定とエディタでファイルを開いた際に表示される文字コードが同じか確認します。
WordPressはPHPでプログラミングされていますので、PHP実行環境がWordPressを動作させます。 wp-config.phpの文字コードがPHPの設定と異なる場合、WordPressが設定を読み込めず、データベース接続確立エラーの原因となりますので、同じになるよう対処します。
3.3. wp-config.phpのデータベースの設定が正しいか
wp-config.phpのデータベースの設定が正しいか確認します。
データベース名(データベース領域名)やMySQLアカウントのパスワードを何らかの理由で変更されたのに反映されていない場合など、 データベース接続確立エラーの原因となりますので、正しい接続情報を確認してwp-config.phpに記述します。
3.4. マルチサイトでドメイン設定に整合が起きていないか
マルチサイトの場合は、wp-config.phpに設定したDOMAIN_CURRENT_SITEとデータベースに保存されたドメインに不整合がないか確認します。
マルチサイトを利用しているWordPressを別ドメインに移設するなどして、 wp-config.phpに設定したDOMAIN_CURRENT_SITEのドメインとデータベースに保存されたドメインに不整合があるとデータベース接続確立エラーになる場合があります。
マルチサイトとは
マルチサイトは、1つのWordPressのダッシュボードから複数のWebサイトのネットワークを作成および管理できるWordPressのインストール方法です。 マルチサイトにすると、すべてのWebサイトを1つの場所から更新することができます。
4. MySQLレベルの原因判別と対処方法
MySQLレベルの原因判別と対処方法です。 MySQLのデータベース領域やMySQLアカウントがあるかなどをチェックする内容となっています。
4.1. MySQLのデータベース領域あるか
MySQLのデータベース領域あるか確認します。 wp-config.phpに設定したMySQLの接続先に設定したデータベース領域がないと当然データベース接続確立エラーとなります。
4.2. データベース領域で利用できるアカウントとなっているか
MySQLアカウントでPHPMyAdminにログイン、もしくはmysqlコマンドで接続して「show databases」を実行して、該当のデータベース領域名が表示されるか確認しましょう。 wp-config.phpに設定したMySQLのアカウントで設定したデータベース領域が利用できる設定になっていないとデータベース接続確立エラーとなります。
4.3. 認証方式が変わっていないか
MySQLのバージョンアップした後に「WordPressのデータベース接続確立エラー」になった場合はMySQLの認証方式などを確認して見るとよいと思います。
たとえば、MySQL8からは、デフォルトのユーザー認証方式がmysql_native_password ではなく、caching_sha2_passwordになっています。
5. OS/NWレベルの原因判別と対処方法
wp-config.phpに設定した接続先とアカウントでMySQLに接続できない場合はOSやNW(ネットワーク)のどこかに原因があります。 OSやNWの原因を判別するにはroot権限のサーバアカウントが必要です。 共用のレンタルサーバーやroot権限のサーバアカウントが使えない場合は判別できませんので、管理元にお問合せする必要があります。
5.1. MySQLが稼働しているか
MySQLが稼働していない場合は当然接続できません。MySQLの停止原因について確認していきます。
通常停止か
MySQLのログファイルを見て通常停止時のログが記録されている場合は、停止コマンドが実行されたことが原因となります。 オペレーションミス、起動停止を行うプログラムの不具合が該当すると思います。
異常停止か
MySQLのログファイルを見て通常停止時のログが記録されておらず、停止している場合は、MySQLのプロセスを落すプログラムなどを確認します。
5.2. 通信を許可しているか
FW(ファイアウォール)でFWの接続ポートに対して、WordPressが稼働するサーバーからの接続が許可されていない場合疎通できません。 設定ミスをしていないか確認しましょう。
6. WordPressのデータベース接続確立エラー関連のログ
WordPressのデータベース接続確立エラー関連のログについてです。
6.1. WordPressのデバックログ
wp-config.phpに以下を追記するとdebug.logというファイル名でWordPressのデバッグログが出力されます。
define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false);
6.2. MySQLのエラーログ
MySQLのエラーログはLinuxの場合/etc/my.cnfのlog-errorに設定されたパスに出力されます。 デフォルトでは/var/log/mysqld.logとなっていると思います。
6.3. OSのsyslog(シスログ)
syslog(シスログ)はOSのログ出力の機構です。 Linuxの場合、シスログ(/var/log/messages)に出力されます。
たとえば、「Out of memory: Kill process 12611 (mysqld) score 79 or sacrifice child」というメッセージが出力されます。 メモリ不足の場合にOOM KillerというLinuxの機構がサーバが落ちないように任意のプロセスを落とします。 つまり、メモリ不足でOOM KillerがMySQLのプロセスをKill(強制停止)させることがあります。 この場合、サーバーのメモリ容量を増やす、リクエストの処理速度を上げる、サーバ構成を変更する、などの対策が必要です。
更新履歴
更新履歴になります。
- 2022/4/21 WordPressのデータベース接続確立エラー関連のログについて追記しました。
- 2022/2/3 マルチサイトでドメイン設定に整合が起きていないかについて追記しました。
- 2020/6/29 記事をアップしました。