如何排除 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,然后运行修复数据库。
**注意:**请将 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 命令从服务器登录到远程服务器:
**注意:**请将 remote server 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。
注意:如果收到访问被拒绝错误,则表明凭证不正确。要解决此问题,请重置数据库用户密码。 - 如果您的数据库主机是远程的,请更新 wp-config.php 文件中的连接字符串。如果数据库在同一台服务器上,则验证 DB\ _NAME 是否为 bitnami-wordpress 且 DB\ _USER 是否为 bn\ _wordpress。
重置数据库用户密码
完成以下步骤:
-
要访问 /home/bitnami/bitnami_credentials,请运行以下命令:
sudo cat /home/bitnami/bitnami_credentials
**注意:**将根数据库密码复制到文本文件中,以备在以下步骤中使用。
-
要登录到 MySQL 或 MariaDB Shell,请运行以下命令:
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 实例。
相关内容
- AWS 官方已更新 1 年前
- AWS 官方已更新 5 个月前
- AWS 官方已更新 6 个月前