Lightsail でホストされている WordPress ベースのアプリケーションにおけるデータベース接続エラーをトラブルシューティングするにはどうすればよいですか?

最終更新日: 2021 年 9 月 28 日

WordPress ベースのアプリケーションに接続するときに、次のエラーのいずれかまたは両方を受け取ります。

  • 「データベース接続の確立中にエラーが発生しました。」
  • 「1 つ以上のデータベーステーブルが使用できません。データベースの修復が必要な可能性があります。」

これらのエラーを解決するにはどうすればよいですか?

簡単な説明

「データベース接続の確立中にエラーが発生しました」というエラーは、次の理由で発生する可能性があります。

  • データベーステーブルが破損している。
  • リモートデータベース接続が無効である。
  • データベースサービスがダウンしている。
  • ボリュームに十分なスペースがない。
  • WordPress 設定ファイルに不正なログイン認証情報がある。

解決方法

破損したデータベーステーブル

ウェブサイトの wp-admin ページ (example.com/wp-admin など) をブラウザで開き、「1 つ以上のデータベーステーブルが利用できません。データベースの修復が必要な可能性があります。」というエラーがないかを確認します。このエラーが表示された場合は、データベーステーブルが破損しているため、「データベース接続の確立中にエラーが発生しました」というエラーが発生しています。破損したテーブルを修復するには、次の操作を実行します。

1.    vi エディタなどのテキストエディタを使用して、wp-config.php ファイルにアクセスします。

$ sudo vi wp-config.php

2.    wp-config.php ファイルに次の行を追加します。「これで完了です。編集をやめてください。 よいブログを」という行の直前に行を追加してください。

define('WP_ALLOW_REPAIR' ,true);

3.    前述の設定をファイルに追加したら、次の URL にアクセスし、[Repair Database] (データベースを修復) を実行します。

/wp-admin/maint/repair.php (例: example.com/wp-admin/maint/repair.php)

4.    データベースの修復を実行した後、wp-config.php ファイルに追加したコード行を削除します。この行を削除しないと、誰でもデータベースで修復を実行できます。

無効なリモートデータベース接続

データベースは、リモートデータベースサーバー上に存在することがあります。データベースサーバーがウェブサイトをホストしているインスタンスからのリモート接続を許可しない場合、データベースに接続できません。これをトラブルシューティングするには、次の操作を実行します。

1.    設定ファイル wp-config.phpDB_HOST 値を確認します。ホストが localhost または 127.0.0.1 でない場合、次の例に示すように、データベースはリモートサーバーに存在しています。

define('DB_HOST', '192.168.22.9');

2.    ポート 3306 でサーバーからリモートサーバーへの telnet を試みます。接続できない場合、リモートサーバー上のデータベース設定でリモート接続は許可されません。または、リモートサーバーに接続をブロックしているファイアウォールがあります。Lightsail インスタンスからの接続の許可に関するサポートについては、外部データベースの所有者またはサポート担当者までお問い合わせください。

高可用性とセキュリティのためには、Lightsail マネージドデータベースにウェブサイトデータベースを保存することがベストプラクティスです。

データベースサービスがダウンしている

注: 以下のファイルパスとコマンドは、Lightsail WordPress インスタンスが MySQL または MariaDB のどちらを使用しているかによって変わる場合があります。また、ファイルパスとコマンドは、インスタンスがネイティブ Linux システムパッケージを使用しているか (アプローチ A)、自己完結型インストールを使用しているか (アプローチ B) によっても異なります。データベースサーバーのタイプと従うアプローチを特定するには、次のコマンドを実行します。

test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A" || echo "Approach B"
test -d /opt/bitnami/mariadb && echo "MariaDB" || echo "MySQL"

1.    テーブルの破損やリモートデータベース接続の問題がないことを確認したにもかかわらず、WordPress が引き続きデータベースに接続できない場合は、データベースサーバーがダウンしている可能性があります。これは、データベース設定の問題がある、サーバー上に大量のトラフィックがある、ディスク領域が少ない、使用可能なメモリが少ない、などが原因で発生する可能性があります。次のコマンドを実行して、データベースサービスのステータスを確認します。

MySQL データベースサーバー

sudo /opt/bitnami/ctlscript.sh status mysql

MariaDB データベースサーバー

sudo /opt/bitnami/ctlscript.sh status mariadb

2.    前述のコマンドでデータベースが停止状態であることが示された場合は、次のコマンドを実行してデータベースサービスを起動してみてください。

MySQL データベースサーバー

sudo /opt/bitnami/ctlscript.sh start mysql

MariaDB データベースサーバー

sudo /opt/bitnami/ctlscript.sh start mariadb

3.    それでもデータベースサービスを起動できず、起動プロセス中にエラーが表示される場合は、データベースサービスのログを確認して根本原因を特定し、問題をトラブルシューティングします。主なデータベースサービスのログファイルは、Lightsail WordPress インスタンスの次のいずれかの場所にあります。

アプローチ A に従った MySQL データベースサーバー: /opt/bitnami/mysql/logs/mysqld.log

アプローチ B に従った MySQL データベースサーバー: /opt/bitnami/mysql/data/mysqld.log

アプローチ A に従った MariaDB データベースサーバー: /opt/bitnami/mariadb/logs/mysqld.log

アプローチ B に従った MariaDB データベースサーバー: /opt/bitnami/mariadb/data/mysqld.log

データベースのパフォーマンスと接続性は、ディスク容量が少ないこと、および/または使用可能なメモリが少ないことによって、影響を受ける可能性があります。df コマンドと free コマンドを実行して、これらのリソースを確認します。

ボリュームの容量が不足している

ボリュームのディスク領域の使用状況が 100% または 100% にわずかに届かない状態である場合は、データベースサービスがダウンする可能性があります。

1.    次のコマンドを実行します。

$ sudo df -h

前述のコマンドは、次の例に示すように、空きディスク領域を一覧表示します。

Filesystem      Size    Used     Avail      Use%    Mounted on
devtmpfs        1.9G     0       1.9G        0%     /dev
tmpfs           1.9G     0       1.9G        0%     /dev/shm
tmpfs           1.9G    400K     1.9G        1%     /run
tmpfs           1.9G     0       1.9G        0%     /sys/fs/cgroup
/dev/nvme0n1p1  8.0G    8.0G      0G        100%    /
tmpfs           389M     0       389M        0%     /run/user/1000

2.    コマンド出力で十分な空き領域がないことが示された場合は、インスタンスのサイズをより大きなサイズに変更できます。あるいは、不要なファイルをサーバーから削除して空き領域を確保することもできます。

3.    空きディスク領域を増やしたら、データベースサービスを再起動します。

WordPress 設定ファイルに不正なログイン認証情報がある

WordPress には、データベースにアクセスするために、ユーザー名、パスワード、およびホストを含む特定のデータベース接続文字列が必要です。これらの項目のいずれかが変更された場合、WordPress はデータベースにアクセスできません。

1.    正しい接続文字列を使用していることを確認するには、wp-config.php ファイル内の接続文字列の詳細 DB_NAME, DB_HOST, DB_USER and DB_PASSWORD を取得します。

2.    接続文字列を使用して、ターミナルからデータベースにアクセスします。DB_NAMEDB_HOST、および DB_USER をステップ 1 で取得した値に置き換えてください。

sudo mysql 'DB_NAME' -h 'DB_HOST' -u 'DB_USER' -p
Enter password: ********

注: パスワードは入力時に表示されないため、他のユーザーは見ることができません。

3.    パスワードを入力したら、ENTER キーを押します。

前述のコマンドの実行時に Access Denied エラーが表示される場合、それは通常、認証情報が正しくないことを意味します。

リモート DB ホストを使用している場合は、wp-config.php ファイルに正しい接続文字列を追加します。データベースが同じサーバーにある場合は、DB_NAMEbitnami_wordpressDB_USERbn_wordpress であることを確認します。

データベースユーザーのパスワードをリセットするには、次の手順を実行します。

1.    次のコマンドを実行して、/home/bitnami/bitnami_credentials にアクセスします。ルートデータベースのパスワードを書き留めます。

sudo cat /home/bitnami/bitnami_credentials

2.    次のコマンドを実行して MySQL/MariaDB シェルにログインし、前述のコマンドで取得したパスワードを入力します。データベースのルートパスワードを使用してシェルにログインできない場合は、パスワードをリセットします (MySQL または MariaDB)。

sudo mysql -u root -p
Enter password: ********

3.    MySQL または MariaDB シェル内で、次のクエリを実行して、データベース bitnami_wordpress が存在することを確認します。

show databases;

4.    次のクエリを実行して、データベースユーザー bn_wordpress が存在することを確認します。

SELECT user FROM mysql.user;

5.    次のクエリを実行して、データベースユーザー「bn_wordpress」のパスワードをリセットします。

注: PASSWORDwp-config.php ファイルから取得したパスワードに置き換えます。

MySQL データベース

alter user 'bn_wordpress'@'localhost' identified by 'PASSWORD‘;
alter user 'bn_wordpress'@'127.0.0.1' identified by 'PASSWORD‘;

MariaDB データベース

alter user 'bn_wordpress'@'%' identified by 'PASSWORD‘;

注: 上記の解決方法のいずれを実行しても解決しない場合は、バックアップスナップショットを使用してインスタンスを復元できます。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?