セキュリティ 2019.10.24 2024.06.28
WordPressのデータベース接続確立エラーの原因とすぐできる解決法
WordPressサイトにアクセスしたら「データベース接続確立エラー」というエラーが表示され、サイトが表示されなくなった!
弊社でもよく相談を受けるケースですが、原因として考えられるのは以下の項目です。
- 「wp-config.php」の入力ミス
- サーバー側の問題
- データベース側の問題
- サイトがハッキングされている
多くの場合、原因として考えられるのが「wp-config.php」の設定ミスです。しかし、場合によっては、サーバー側でトラブルが起こっていたり、悪意のあるハッキングを受けている可能性も考えられます。
今回は「データベース接続確立エラー」が発生する原因の解説とWordPress初心者の方でもすぐに出来る対処方法をわかりやすくご紹介していきます!
「一刻も早くサイトを復旧したい」という場合には、ハッキングにも対応可能なWordPress復旧サービスにご相談ください。サイト復旧を迅速にサポートさせていただくのでご自身で調べる手間がかかリません。
【迅速サポート】WordPress復旧サービスへのご相談はこちら
目次
データベース接続確立エラーとは
データベース接続確立エラーとは、簡単に言うと「サーバーとデータベースの連携が上手くいっていませんよ」というエラーになります。
データベース接続確立エラーが発生すると、Webブラウザ上に「Error establishing a database connection」と表示されます。
WordPressを使う際の大前提として知っておくとよいのが、WordPressはデータベースと連携することで初めて動作するということです。データベースとは何か一言で言うと「管理画面から入力された記事やサイトの情報・設定などの、動的な情報を保存する箱のようなもの」です。保存された情報は「データベース」という箱に保存されます。
データベースには誰でも自由にアクセスできるわけではありません。誰でも自由にアクセスできてしまうと不正なアクセスをされてサイトの情報を盗まれたり、改ざんされてしまい困るからです。ですから、アクセス権限を適切に設定する必要があります。
データベースにアクセスすることを「データベースに接続する」といい、ユーザー名やパスワードが一致してデータベースが使用可能になった状態を「データベース接続が確立された」といいます。
データベースに接続しようとする際、ユーザー名やパスワードが間違っているなど、アクセス権限が認証されない場合データベース接続が確立できない状態になります。これが「データベース接続確立エラー」というものです。
すごく雑な図で解説すると、WordPressサイトでは、下図のようにあるページへのアクセスがあった際、
サーバーからデータベースに「あのページの情報が欲しいよ」
という要求(=リクエスト)があり、
データベースが「はい、どうぞ」と応答してデータを返すことでサイトを表示しています。
しかし、「データベース接続確立エラー」が起こると、
サーバーからデータベースに「あのページ情報が欲しいよ」と言っても、
何らかの原因でデータベースからの応答がなくてサイトを表示できていない状態です。
サーバーは仕方なく、データベースにアクセスできなかったという意味の「データベース接続確立エラー」画面を表示します。
このエラーは、データベースにアクセスできなかったということを示すだけなので、これだけでは具体的にどこに問題があるのかはわかりません。
- 要求されたデータが破損している
- 問い合わせるデータベース名が間違っている
- サーバー側で障害が発生している
- データベースに異常が発生している
などの原因が考えられます。
ただ、基本的に、このエラーが出た時点では記事やサイトのデータが全部消えてしまっている、ということはまずありませんのでご安心ください。
ほとんどは、単純な設定ミスかサーバー側の問題であることが原因ですので、以下を確認してみましょう。
【最短1日で復旧!】WordPress復旧サービスの無料相談はこちら
「wp-config.php」の入力ミス
サーバーやWordPressを引っ越した際には、「wp-config.php」の設定を変更する必要があります。設定ミスや記載漏れがあった場合には、「データベース接続確立エラー」または「Error Establishing Database Connection,」エラーメッセージが表示されます。
WordPressを別のサーバーに引っ越した場合、wp-config.phpのデータベース設定の書き換えが必要です。忘れるとデータベース接続確立エラーになります。
旧サーバーから取得したバックアップをエクスポートして新たなサーバーにインポートした場合は要注意です。この場合、wp-config.phpのデータベース接続情報は移転元の古いサーバーの情報になっているので接続情報を変更しないとデータベース接続確立エラーとなってしまいます。
データベース接続確立エラーが発生する最もよくある原因は認証情報が正しくないことです。特にホスティング会社を切り替えた直後に起きやすいのが認証情報の間違いです。WordPressウェブサイトの接続の詳細詳細は、ウェブサイトのルートにあるwp-config.phpファイルに保存されています。
wp-config.phpと実際のデータベースのログイン情報が一致しなくなったときにデータベース接続確立エラーが発生します。その場合、FTPクライアント等を介してWebサーバーに接続し、wp-config.phpファイルを編集します。
「wp-config.php」で入力が必要なデータベース情報の項目は下記になります。
- データベース名
- データベースのユーザー名
- データベースのパスワード
- データベースのホスト名
これらの情報のいずれかが間違っていると、「データベース接続確立エラー」になってしまいます。
「wp-config.php」の記述を探して、入力されている情報が間違っていないか確認しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** // /** WordPress のためのデータベース名 */ define('DB_NAME', '(データベースの名前)'); /** MySQL データベースのユーザー名 */ define('DB_USER', '(データベースのユーザー名)'); /** MySQL データベースのパスワード */ define('DB_PASSWORD', '(データベースのパスワード)'); /** MySQL のホスト名 */ define('DB_HOST', '(データベースのホスト名)'); |
入力する内容はホストしているサーバーの管理画面などで確認しましょう。
データベース名が正しくても、データベース接続の確立エラーが発生している場合は、ユーザー名とパスワードも確認しましょう。これを行うには、Webサイトのルートディレクトリに新しいPHPファイル(ここではcheck.phpとします。)を作成し、次のコードを入力します。
1 2 3 4 5 6 7 |
<?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); |
次にWebサイトのこちらのファイルにアクセスします:https://example.com/check.php
example.comはご自身のWebサイトのドメインに置き換えてください。
Webブラウザ上で「MySQL Error: Access denied」(MySQLエラー:アクセスが拒否されました)というエラーメッセージが表示された場合は、ユーザー名またはパスワードが間違っています。「Database connection is working properly」(データベース接続は正しく機能しています)というメッセージであれば、正常状態となっています。エラーメッセージが表示されるようであれば、資格情報をリセットしましょう。
データベース設定は間違っていないのにエラーが発生する場合、入力したコードの文法ミスの可能性があります。
例えば、半角で入力すべき文字が全角で入力されていることが考えられます。「’」など文字によっては半角か全角か判別しづらい文字もありますので注意しましょう。
サーバー側の問題
上記の記述に問題がない場合、サイトをホストしているレンタルサーバーなどで、下記のような問題が発生している可能性があります。
- サーバーがダウンしている
- データベースサイズが上限を超えた
- データベース側のパスワードを変更した
サーバーがダウンしている
サーバー側のメンテナンスや技術的な問題、不意にアクセス数が急増した場合などが該当します。サーバーからメンテナンスや不具合のお知らせが来ていないかチェック、もしくはホスティング会社に直接連絡してみましょう。
データベースサイズが上限を超えた
記事や画像を大量に投稿している場合や元々のプランでデータベースの容量が少ない場合に発生します。サーバー会社に連絡して、該当するようであれば、データベースの軽量化とともに、プランの変更やサーバーの乗り換えなども検討しましょう。
データベース側のパスワードを変更した
レンタルサーバーの管理画面からデータベースのパスワードを変更することがあります。
その場合、サーバー側のパスワードのみが変更されるため、wp-config.phpに記述されたパスワードも変更する必要があります。これを忘れてしまうとデータベース接続確立エラーが発生します。
データベースが破損している場合
プログラムによる大量のDB操作をすることで、データベースが破損する可能性があります。
管理画面に「One or more database tables are unavailable. The database may need to be repaired.(データベースが利用できません。修復が必要な場合があります。)」と表示された場合、データベースが破損しているため、修復する必要があります。フロントエンド(ユーザーに見える部分)でデータベース接続の確立エラーが表示されながら、バックエンド(ユーザーには見えない部分(サーバー内のログなど))でのみ上記のメッセージが表示される可能性もありますので、ご注意ください。
wp-config.phpファイルに次の行を追加し、このページをリロードしましょう。
これは、データベースの修復を行うためのコードです。
define(‘WP_ALLOW_REPAIR’, true);
その後、https://example.com/wp-admin/maint/repair.phpにアクセスするとデータベースの修復ページに移動します。
「データベースの修復」と「データベースの修復と最適化」のどちらかのモードを選択するのですが、今回は復旧のみを考え、「データベースの復旧」を選択します。
ボタンをクリックするとデータベースの修復が行われるので、完了を待ちます。
セキュリティの脆弱性を避けるため、wp-config.phpファイルに追加したコードは削除しましょう。コードが残っていると他人がファイルにアクセスし、操作されてしまう可能性があります。
破損したデータベースを修復する
この場合、破損したデータベースを修復する必要があります。
それほど、難しい操作も必要ないので、解説していきます。
今回は、参考にXサーバーで「phpMyAdmin」というツールを使用する場合の修復手順をご紹介します。
他のサーバーの場合は、「サーバー名 + データベース修復」などで検索すると、それぞれの場合の手順が出てくるでしょう。
phpMyAdminを使う場合の復元手順は以下です。
- 1.phpMyAdmin にアクセスする
- 2.データベースをクリックする
- 3.破損したデータベースを確認して修復する
phpMyAdminにアクセスする
まずは、Xサーバーのサーバーパネルにログインし、データベースの項目の「phpMyAdmin」をクリックします。
ユーザー名とパスワードが表示されます。ここで入力するのは、「wp-config.php」に記載されている「データベースのユーザー名」と「データベースのパスワード」です。Xサーバーのユーザー名とパスワードではないので注意しましょう。
破損したデータベースを確認して修復する
修復したいドメインのデータベースをクリックします。
下のような画面でデータベースの項目(テーブルと呼びます)一覧が表示されます。
ここで破損している項目がある場合は、種別などの項目に「使用中」と表示されます。
目立つのですぐにわかります。
使用中となっているテーブルがあれば修復を行いますが、修復の前にまずデータベースのバックアップを取りましょう。
データベースのバックアップ方法はこちらのページを参照してください。
バックアップは必ず取るようにしましょう。万が一、修復がうまくいかなくても取り返しがききます。
修復が必要なテーブルに「チェックボックス」にチェックを入れ、
画面下のドロップダウンから「テーブルを修復する」を選択。
その後、右下の「実行」ボタンをクリックすれば完了です。
正常にテーブルが修復されていれば、サイトが表示されるはずです。
もし表示されなければこちらからご相談ください。
サイトがハッキングされている
上記のいずれでも問題が起きていない場合は、サイトがハッキングされている可能性があります。
ハッキングされると、一時的にサーバーに異常な負荷がかかることがあります。その場合、レンタルサーバーは負荷を軽減するため、そのサイトが動作しないように強制的にサイトを停止する場合があります。サイトが停止しているために起こっているエラーの可能性もあるのです。
「Sucuri SiteCheck」でサイトをスキャンしてみましょう。
何らかの問題が発見された場合は、ハッキングからの自力復旧する方法などを参照してみてください。
【最短1日!】ハッキング復旧の経験が豊富なWordPressのプロに無料相談する
XAMPPやMAMPでMySQLを起動していない(ローカル環境での開発)
XAMPPやMAMPを使ってローカル環境でWordPressを動作させる場合、MySQLを起動していないとWordPressを実行できません。これもデータベース接続確立エラーになります。
XAMPPは以下の略語です。
X:クロスプラットフォーム
A:Apache
M:MariaDB または、MySQL
P:PHP
P:Perl
MAMPは以下の略語です。
Macintosh
Apache
MySQL
PHP
対処法は、XAMPPやMAMPのコントロールパネルで「Start」ボタンをクリックしてMySQLサーバーを起動させましょう。
ファイルが破損している場合
データベース接続確立エラーの次に考えられる原因は、ファイルの破損です。ファイルが破損した理由はFTPを介してのファイル転送中の異常などいろいろ原因は考えられますが、すぐに処理できます。ただし、これを行う前に必ずWebサイトのバックアップを取っておきましょう。
バックアップの取り方を簡単に説明すると、WebサイトのWordPressのコアバージョンを置き換えます。プラグイン、テーマ、メディアではなく、インストールされているWordPressそのものを変更するのです。これを行うには、WordPress.orgからWordPressの新しいコピーをダウンロードする必要があります。
ダウンロード後、圧縮ファイルを解凍します。その中のwp-config-sample.phpファイルとwp-contentフォルダを削除します。
次に、残りのファイルをSFTPを介してウェブサイトにアップロードし、既存のファイルを上書きします。これにより、問題のあるファイルが全て破損していない新しいファイルに置き換えることができます。完了後にはブラウザのキャッシュをクリアすることもお勧めします。次にブラウザでWebサイトを開いて、エラーが表示されているかを確認します。
XAMPPで接続できないときの対処法
XAMPPでMySQLに接続できないときは、主に下記の3つの理由が考えられます。
- 設定ファイルの記述ミス
- ポート番号が競合している
- 破損ファイルが邪魔をしている
1つ目の設定ファイルの記述ミスがある場合は、スペルミス等がないかを確認することが大切です。単純なミスであることがほとんどであるため、一つひとつ隈なく確認することがエラー解決の鍵となります。
2つ目のポート番号の競合については、MySQLのポート番号である「3306」が他で使用されていないかを確認し、使用されていた場合は修正することが大切です。なお、ポート番号の競合が確認する際は、XAMPPのControl Panelの「Netstat」ボタンをクリックすることで確認できます。
最後の破損ファイルが邪魔をしている場合は、下記の手順を踏むことでエラーを解決できます。エラーの原因が明確に分からない場合は、一度試してみると良いでしょう。
- MySQLの「Config」ボタンをクリック
- その後<Browse>をクリック
- フォルダ一覧から、「data」フォルダをクリック
- 「ib_logfile」で始まるファイルと「iddata1」というファイルをすべて、ローカル環境等に移動させてから、MySQLの再起動を行う
MySQLでエラーが起きている
データベース接続確立エラーは、MySQL側のエラーが原因となっていることも少なくありません。MySQL側のエラーが原因となっている場合、コマンドライン・ログファイルにエラーメッセージが表示されるため、エラーを確認するとともに修正を行いましょう。
MySQLでよく見られるエラーの原因と対処法は下記の表の通りです。
エラー | 原因 | 対処法 |
エラー1044 | 命令に対する権限がない | ユーザーに権限を付与する |
エラー1045 | YESの場合:権限など、ユーザー設定が間違えている
NOの場合:パスワードを使用する際のオプションを間違えている |
YESの場合:ユーザーの権限設定を確認し、問題ないにも関わらずエラーが起きている場合は、再度ユーザーを作成し直す
NOの場合:ログイン時にオプション「-p」をつけて、パスワードを入力する |
エラー1046 | 操作するデータベースが選択されていない | テーブル指定前に「use [データベース名];」を実行する |
エラー1054 | 指定したカラムが参照できない | SQL文の見直しを行う |
エラー1062 | 主キーが重複するデータ登録操作 | 主キーの重複を回避する |
エラー1064 | SQL文の誤り | SQL文を見直す |
エラー1067 | MySQL Serverの起動時に、設定ファイルが読み込めず起動できない | 古いMySQLの設定ファイルを削除する
再インストールを行う |
エラー1146 | 指定したテーブル名が解決できない | テーブル名・区切り文字を見直す
インストーラーを使用した際は、再インストールを行う |
エラー1918 | MySQL Connectorのインストールに失敗している | 該当DLL(共有ライブラリ)をインストールする |
エラー2002 | ソケットファイルがないことによるソケットエラー | ソケットファイルの場所を指定するオプションを入力後起動する
また、どこにも存在しない場合は手動で作成する |
エラー2003 | 指定ホストに接続できない | 指定サーバーがそのホストで稼働しているのかを確認する |
エラー2006 | タイムアウトして接続がクローズしている、設定より大きなクエリを実行しようとしている | タイムアウトの場合はタイムアウトまでの時間を変更する
クエリサイズが大きすぎる場合、最大サイズの設定を変更する |
MySQL側のエラーであると考えられる場合は、必ずエラーコードを確認の上、改善するようにしましょう。
データベース接続確立エラーの原因がわからない場合は?
データベース接続確立エラーの主な原因と対処方法について解説してきましたが、症状は改善したでしょうか?
上記の手順に従っても異常が処理されない場合は、データベースサーバーの異常が発生している可能性があるため、ホスティング会社に確認してみましょう。例えば、データベースへの同時接続の数が多すぎると、データベース接続確立エラーが発生する可能性があります。理由は、一度に許可される接続数を制限しているホスティング会社が多いためです。
もし、「解説を読んでもよくわからない!」「もうお手上げだ」「一刻も早くサイトを復旧したい」という場合には、ハッキングにも対応可能なWordPress復旧サービスにご相談ください。サイト復旧を迅速にサポートさせていただきます。
WordPressサイトのトラブル復旧なら「wp.rescue」にお任せ!
WordPressサイトで急なトラブルにあったら、「wp.rescue」にご相談ください!
- 急にサイトに何も表示されなくなった…
- ログインできなくなった…
- 覚えのない不審なページがインデックスされている…
- 不審なユーザーが追加されている…
- リンクが不審なサイトに飛ぶように書き換えられている…
- バージョンアップしたらサイトが崩れてしまった…
「wp.rescue」は、WordPressのプロフェッショナル集団によるWordPressトラブル・ハッキング復旧サービスです。
WordPressサイト運営していて、急なトラブルに遭うことは珍しくありません。
原因や解決法方がわかる場合は問題ありませんが、原因がわからなかったり、ハッキングの可能性がある場合はプロに相談するのが一番です。
wp.rescueでは、様々なサイトのトラブルやハッキング被害を解決してきた経験・ノウハウがあるため、速やかなサイトの復旧が可能です。
トラブル復旧はスピードも重要。wp.rescueなら最短即日での復旧も可能ですので、お困りの場合はまずはお問い合わせフォームから無料相談をしてください。
「あれ? 何かおかしい…」と思ったら、WordPressハッキング・緊急対応サービス『wp.rescue』
特に心当たりもないのに、
・WordPressにログインできない…
・検索結果の表示がおかしい…
・勝手にリダイレクトされてしまう…
など、「何か変だ」と感じたら、
実はWordPressがハッキングされている可能性もあります。
被害が拡大・深刻化する前に、『wp.rescue』にご相談ください!
WordPressのプロフェッショナルがあなたのサイトの問題を迅速解決!