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

所要時間3分
0

WordPress ベースのアプリケーションを Amazon Lightsail に接続すると、次のエラーのいずれかまたは両方が表示されます。 「Error establishing a database connection.」「One or more database tables are unavailable.The database may need to be repaired.」 この問題を解決したいと考えています。

簡単な説明

こうしたエラーメッセージは、次のいずれかが原因で表示されます。

  • データベーステーブルが壊れている
  • リモートデータベース接続がブロックされている
  • データベースサービスで問題が発生している
  • ボリュームの容量が十分でない
  • WordPress 設定ファイルのログイン認証情報が正しくない

解決方法

データベーステーブルが壊れている

壊れたデータベーステーブルを確認するには、次の手順を実行します。

  1. example.com/wp-admin に移動し、次のエラーがないか確認します。 One or more database tables are unavailable.The database may need to be repaired.
    注: example.com は、ご自身のウェブサイト名に置き換えてください。

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

    $ sudo vi wp-config.php
  3. 行「That's all, stop editing! Happy blogging」の直前に、次の行を追加します。

    define('WP_ALLOW_REPAIR' ,true);
  4. example.com/wp-admin/maint/repair.php に移動し、Repair Database を実行します。
    注: example.com は、ご自身のウェブサイト名に置き換えてください。

  5. wp-config-php ファイルに戻り、手順3で追加したコード行を削除します。

リモートデータベース接続がブロックされている

ウェブサイトをホストしているインスタンスからのリモート接続がデータベースサーバーで許可されていない場合、そのデータベースには接続できません。可用性とセキュリティを高めるには、Lightsail で管理するデータベースにウェブサイトデータベースを保存するのがベストプラクティスです。

データベース接続を確認するには、次の手順を実行します。

  1. wp-config.php 設定ファイルで次の DB_HOST 値を確認します。
    define('DB_HOST', '192.168.22.9');
    注: 値が localhost でも 127.0.0.1 でもない場合、データベースはリモートサーバーにあります。DB_HOST 値をコピーしてください。次の手順で使用します。
  2. ポート 3306 を使用して、次のようにサーバーからリモートサーバーへ Telnet 接続します。
    telnet remote server IP 3306
    注: リモートサーバー IP は、手順1で取得した DB_HOST 値に置き換えてください。
  3. 接続できない場合は、リモートサーバーのデータベース設定でリモート接続が許可されていません。リモートサーバーのファイアウォールで接続をブロックしている可能性もあります。外部データベース所有者またはサポートチームに連絡し、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 データベースのサービスの問題なのか確認するには、次の手順を実行します。

  1. データベースサーバーのステータスを確認するため、次のコマンドを実行します。

    sudo /opt/bitnami/ctlscript.sh status mysql
  2. データベースが停止している場合は、次のコマンドを実行します。

    sudo /opt/bitnami/ctlscript.sh start mysql
  3. それでもデータベースサービスを起動できない場合や、起動プロセス中にエラーが表示された場合は、データベースログを確認して根本原因を特定します。サーバーでネイティブ Linux システムを使用している場合は、ファイルの場所 /opt/bitnami/mysql/logs/mysqld.log を確認します。サーバーが自己完結型インストールの場合は、ファイルの場所 /opt/bitnami/mysql/data/mysqld.log を確認します。ディスク容量が少ないか、空きメモリが少ないと、データベースのパフォーマンスと接続に影響します。こうしたリソースを確認するには、df コマンドと free コマンドを実行します。

MariaDB データベースサーバー

MariaDB データベースのサービスの問題なのか確認するには、次の手順を実行します。

  1. データベースサーバーのステータスを確認するため、次のコマンドを実行します。

    sudo /opt/bitnami/ctlscript.sh status mariadb
  2. データベースが停止している場合は、次のコマンドを実行します。

    sudo /opt/bitnami/ctlscript.sh start mariadb
  3. それでもデータベースサービスを起動できない場合や、起動プロセス中にエラーが表示された場合は、データベースログを確認して根本原因を特定します。サーバーでネイティブ Linux システムを使用している場合は、ファイルの場所 /opt/bitnami/mariadb/logs/mysqld.log を確認します。サーバーが自己完結型インストールの場合は、ファイルの場所 /opt/bitnami/mariadb/data/mysqld.log を確認します。ディスク容量が少ないか、空きメモリが少ないと、データベースのパフォーマンスと接続に影響します。こうしたリソースを確認するには、df コマンドと free コマンドを実行します。

ボリュームの容量が十分でない

ボリュームの空きディスク容量が100% か100% 近くになっている場合、データベースサービスがダウンする可能性があります。

サーバーのボリュームを確認するには、次の手順を実行します。

  1. 空きディスク容量を確認するため、次のコマンドを実行します。

    $ 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
  2. 空き容量が十分でない場合は、インスタンスサイズを増やすか、サーバーから不要なファイルを削除します。

  3. データベースサービスを再起動します。

WordPress 設定ファイルのログイン認証情報が正しくない

認証情報を確認する

次の手順を実行します。

  1. wp-config.php ファイルに移動します。次の手順で使用するため、DB_NAMEDB_HOSTDB_USERDB_PASSWORD の内容をテキストファイルにコピーします。
  2. ターミナルからデータベースにアクセスするため、次のコマンドを実行します。
    sudo mysql 'DB_NAME' -h 'DB_HOST' -u 'DB_USER' -pEnter password: ********
    注: DB_NAMEDB_HOSTDB_USER は、手順1でコピーした値に置き換えてください。
  3. パスワードに DB_PASSWORD の値を入力し、ENTER キーを押します。
    注: アクセス拒否エラーが表示された場合は、認証情報が正しくありません。これを解決するためには、データベースユーザーパスワードをリセットしてください。
  4. DB ホストがリモートの場合は、wp-config.php ファイルの接続文字列を更新します。データベースが同じサーバーにある場合は、DB_NAMEbitnami-wordpressDB_USERbn_wordpress であることを確認します。

データベースユーザーパスワードをリセットする

次の手順を実行します。

  1. /home/bitnami/bitnami_credentials にアクセスするため、次のコマンドを実行します。

    sudo cat /home/bitnami/bitnami_credentials

    注: ルートデータベースのパスワードはテキストファイルにコピーしてください。次の手順で使用します。

  2. MySQL シェルまたは MariaDB シェルにログインするため、次のコマンドを実行します。

    sudo mysql -u root -pEnter password: ********

    注: mysql はご自身のサーバー、******** は手順1でコピーしたルートデータベースのパスワードに置き換えてください。そのパスワードでログインできない場合は、Bitnami ウェブサイトの指示に従って MySQL または MariaDB のパスワードをリセットしてください。

  3. bitnami_wordpress データベースが存在することを確認するため、次のクエリを実行します。

    show databases;
  4. bn-wordpress データベースユーザーが存在することを確認するには、次のクエリを実行します。

    SELECT user FROM mysql.user;
  5. 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 インスタンスをスナップショットから起動します。

AWS公式
AWS公式更新しました 4ヶ月前
コメントはありません