使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何排除 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,然后运行修复数据库
    **注意:**请将 example.com 替换为您的网站名称。

  5. 返回 wp-config-php 文件,删除您在步骤 3 中添加的代码行。

远程数据库连接被阻止

如果数据库服务器不允许来自托管网站的实例进行远程连接,则您无法连接到数据库。最佳做法是将网站数据库存储在 Lightsail 托管的数据库中,这样即可实现高可用性和安全性。

要检查您的数据库连接,请完成以下步骤:

  1. 检查 wp-config.php 配置文件中的 DB\ _HOST 值:
    define('DB_HOST', '192.168.22.9');
    **注意:**如果该值不是 localhost127.0.0.1,则表明数据库位于远程服务器上。复制 DB\ _HOST 值,以备在以下步骤中使用。
  2. 通过端口 3306 使用 telnet 命令从服务器登录到远程服务器:
    telnet remote server IP 3306
    **注意:**请将 remote server 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。磁盘空间不足或可用内存不足会影响数据库性能和连接。要检查这些资源,请运行 dffree 命令。

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。磁盘空间不足或可用内存不足会影响数据库性能和连接。要检查这些资源,请运行 dffree 命令。

卷上的空间不足

如果卷上的可用磁盘空间为 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. 如果您的数据库主机是远程的,请更新 wp-config.php 文件中的连接字符串。如果数据库在同一台服务器上,则验证 DB\ _NAME 是否为 bitnami-wordpressDB\ _USER 是否为 bn\ _wordpress

重置数据库用户密码

完成以下步骤:

  1. 要访问 /home/bitnami/bitnami_credentials,请运行以下命令:

    sudo cat /home/bitnami/bitnami_credentials

    **注意:**将根数据库密码复制到文本文件中,以备在以下步骤中使用。

  2. 要登录到 MySQLMariaDB Shell,请运行以下命令:

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

    **注意:**请将 mysql 替换为您的服务器,将 ******** 替换为您在步骤 1 中复制的根数据库密码。如果您无法使用密码登录,请按照 Bitnami 网站上的说明重置 MySQLMariaDB 的密码。

  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 官方已更新 7 个月前