Lightsail でホストされている WordPress ベースのアプリケーションで発生したデータベース接続エラーをトラブルシューティングするにはどうすればよいですか?
WordPress ベースのアプリケーションを Amazon Lightsail に接続すると、次のエラーのいずれかまたは両方が表示されます。 「Error establishing a database connection.」「One or more database tables are unavailable.The database may need to be repaired.」 この問題を解決したいと考えています。
簡単な説明
こうしたエラーメッセージは、次のいずれかが原因で表示されます。
- データベーステーブルが壊れている
- リモートデータベース接続がブロックされている
- データベースサービスで問題が発生している
- ボリュームの容量が十分でない
- WordPress 設定ファイルのログイン認証情報が正しくない
解決方法
データベーステーブルが壊れている
壊れたデータベーステーブルを確認するには、次の手順を実行します。
-
example.com/wp-admin に移動し、次のエラーがないか確認します。 One or more database tables are unavailable.The database may need to be repaired.
注: example.com は、ご自身のウェブサイト名に置き換えてください。 -
vi エディタなどのテキストエディタを使用して、wp-config.php ファイルにアクセスします。
$ sudo vi wp-config.php
-
行「That's all, stop editing! Happy blogging」の直前に、次の行を追加します。
define('WP_ALLOW_REPAIR' ,true);
-
example.com/wp-admin/maint/repair.php に移動し、Repair Database を実行します。
注: example.com は、ご自身のウェブサイト名に置き換えてください。 -
wp-config-php ファイルに戻り、手順3で追加したコード行を削除します。
リモートデータベース接続がブロックされている
ウェブサイトをホストしているインスタンスからのリモート接続がデータベースサーバーで許可されていない場合、そのデータベースには接続できません。可用性とセキュリティを高めるには、Lightsail で管理するデータベースにウェブサイトデータベースを保存するのがベストプラクティスです。
データベース接続を確認するには、次の手順を実行します。
- wp-config.php 設定ファイルで次の DB_HOST 値を確認します。
注: 値が localhost でも 127.0.0.1 でもない場合、データベースはリモートサーバーにあります。DB_HOST 値をコピーしてください。次の手順で使用します。define('DB_HOST', '192.168.22.9');
- ポート 3306 を使用して、次のようにサーバーからリモートサーバーへ Telnet 接続します。
注: リモートサーバー IP は、手順1で取得した DB_HOST 値に置き換えてください。telnet remote server IP 3306
- 接続できない場合は、リモートサーバーのデータベース設定でリモート接続が許可されていません。リモートサーバーのファイアウォールで接続をブロックしている可能性もあります。外部データベース所有者またはサポートチームに連絡し、Lightsail インスタンスからの接続を設定してもらってください。
データベースサービスで問題が発生している
データベースサービスがダウンしているのかを確認するには、Lightsail WordPress インスタンスでサーバータイプに MySQL と MariaDB のいずれを使用しているかを確認します。また、インスタンスでネイティブ Linux システムを使用しているのか、自己完結型インストールのサーバーを使用しているのかも確認します。サーバータイプとアプローチを特定するには、次のコマンドを実行します。
test -d /opt/bitnami/mariadb && echo "MariaDB" || echo "MySQL"
test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A" || echo "Approach B"
注: 出力にアプローチ A が表示されている場合、サーバーではネイティブ Linux システムを使用しています。アプローチ B が表示されている場合、サーバーは自己完結型インストールです。
MySQL データベースサーバー
MySQL データベースのサービスの問題なのか確認するには、次の手順を実行します。
-
データベースサーバーのステータスを確認するため、次のコマンドを実行します。
sudo /opt/bitnami/ctlscript.sh status mysql
-
データベースが停止している場合は、次のコマンドを実行します。
sudo /opt/bitnami/ctlscript.sh start mysql
-
それでもデータベースサービスを起動できない場合や、起動プロセス中にエラーが表示された場合は、データベースログを確認して根本原因を特定します。サーバーでネイティブ Linux システムを使用している場合は、ファイルの場所 /opt/bitnami/mysql/logs/mysqld.log を確認します。サーバーが自己完結型インストールの場合は、ファイルの場所 /opt/bitnami/mysql/data/mysqld.log を確認します。ディスク容量が少ないか、空きメモリが少ないと、データベースのパフォーマンスと接続に影響します。こうしたリソースを確認するには、df コマンドと free コマンドを実行します。
MariaDB データベースサーバー
MariaDB データベースのサービスの問題なのか確認するには、次の手順を実行します。
-
データベースサーバーのステータスを確認するため、次のコマンドを実行します。
sudo /opt/bitnami/ctlscript.sh status mariadb
-
データベースが停止している場合は、次のコマンドを実行します。
sudo /opt/bitnami/ctlscript.sh start mariadb
-
それでもデータベースサービスを起動できない場合や、起動プロセス中にエラーが表示された場合は、データベースログを確認して根本原因を特定します。サーバーでネイティブ Linux システムを使用している場合は、ファイルの場所 /opt/bitnami/mariadb/logs/mysqld.log を確認します。サーバーが自己完結型インストールの場合は、ファイルの場所 /opt/bitnami/mariadb/data/mysqld.log を確認します。ディスク容量が少ないか、空きメモリが少ないと、データベースのパフォーマンスと接続に影響します。こうしたリソースを確認するには、df コマンドと free コマンドを実行します。
ボリュームの容量が十分でない
ボリュームの空きディスク容量が100% か100% 近くになっている場合、データベースサービスがダウンする可能性があります。
サーバーのボリュームを確認するには、次の手順を実行します。
-
空きディスク容量を確認するため、次のコマンドを実行します。
$ sudo df -h
出力例:
Filesystem Size Used Avail Use% Mounted ondevtmpfs 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
-
空き容量が十分でない場合は、インスタンスサイズを増やすか、サーバーから不要なファイルを削除します。
-
データベースサービスを再起動します。
WordPress 設定ファイルのログイン認証情報が正しくない
認証情報を確認する
次の手順を実行します。
- wp-config.php ファイルに移動します。次の手順で使用するため、DB_NAME、DB_HOST、DB_USER、DB_PASSWORD の内容をテキストファイルにコピーします。
- ターミナルからデータベースにアクセスするため、次のコマンドを実行します。
注: DB_NAME、DB_HOST、DB_USER は、手順1でコピーした値に置き換えてください。sudo mysql 'DB_NAME' -h 'DB_HOST' -u 'DB_USER' -pEnter password: ********
- パスワードに DB_PASSWORD の値を入力し、ENTER キーを押します。
注: アクセス拒否エラーが表示された場合は、認証情報が正しくありません。これを解決するためには、データベースユーザーパスワードをリセットしてください。 - DB ホストがリモートの場合は、wp-config.php ファイルの接続文字列を更新します。データベースが同じサーバーにある場合は、DB_NAME が bitnami-wordpress で DB_USER が bn_wordpress であることを確認します。
データベースユーザーパスワードをリセットする
次の手順を実行します。
-
/home/bitnami/bitnami_credentials にアクセスするため、次のコマンドを実行します。
sudo cat /home/bitnami/bitnami_credentials
注: ルートデータベースのパスワードはテキストファイルにコピーしてください。次の手順で使用します。
-
MySQL シェルまたは MariaDB シェルにログインするため、次のコマンドを実行します。
sudo mysql -u root -pEnter password: ********
注: mysql はご自身のサーバー、******** は手順1でコピーしたルートデータベースのパスワードに置き換えてください。そのパスワードでログインできない場合は、Bitnami ウェブサイトの指示に従って MySQL または MariaDB のパスワードをリセットしてください。
-
bitnami_wordpress データベースが存在することを確認するため、次のクエリを実行します。
show databases;
-
bn-wordpress データベースユーザーが存在することを確認するには、次のクエリを実行します。
SELECT user FROM mysql.user;
-
MySQL データベースを使用している場合は、次のコマンドを実行して bn-wordpress ユーザーのデータベースパスワードをリセットします。
alter user 'bn_wordpress'@'localhost' identified by 'PASSWORD';alter user 'bn_wordpress'@'127.0.0.1' identified by 'PASSWORD';
MariaDB データベースを使用している場合は、次のコマンドを実行して bn-wordpress ユーザーのデータベースパスワードをリセットします。
alter user 'bn_wordpress'@'%' identified by 'PASSWORD';
注: PASSWORD は、手順3「認証情報を確認する」の wp-config.php ファイルにあるパスワードに置き換えてください。
上記のいずれの解決方法でも問題が解決しない場合は、新しい Lightsail インスタンスをスナップショットから起動します。
関連するコンテンツ
- 質問済み 2年前lg...
- 質問済み 8ヶ月前lg...
- 質問済み 4年前lg...
- AWS公式更新しました 2ヶ月前