WordPress 数据库错误故障排除

介绍

WordPress 是一个流行的开源网络发布平台。它是用 PHP 编写的,并使用 MySQL 数据库来存储动态内容。如果 WordPress 无法连接到数据库,它会显示一条公共错误消息:建立数据库连接时出错

WordPress 数据库错误

发生这种情况的原因有多种:RAM 或磁盘空间不足、数据库损坏、插件错误、主题行为不当、密码不正确、MySQL 错误等等。本故障排除指南提供了解决许多数据库问题的有用步骤。本指南使用example_DB_nameexample_passwordwww.example.com等值。将这些值替换为您的站点信息。

第一步

在执行以下任何步骤之前,请检查https://my.vultr.com上的服务器控制台。如果屏幕上出现任何“内存不足”错误,请重新启动实例。这通常会暂时纠正问题。如果问题再次出现,您可能需要升级服务器以添加更多内存或磁盘空间。

进行备份

在执行任何故障排除之前,以可靠的备份作为起点至关重要。请不要跳过这些步骤。

创建快照

创建您的实例的快照。Vultr 快照允许您在出现问题时恢复精确的时间点备份。导航到https://my.vultr.com/snapshots/制作快照。有关更多详细信息,请参阅我们的快照快速入门指南。

验证 MySQL 是否正在运行

MySQL 守护程序可能已停止。使用psgrep验证它正在运行。这应该返回一行,显示进程 ID 和命令行。

# ps -ax | grep '[m]ysqld'

 1342 ?        Sl     0:01 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid

查看 MySQL 日志

查看日志文件以获取信息。查找有关错误密码、损坏的表、内存或磁盘空间问题等的消息。日志信息在诊断数据库问题的根本原因时非常有用。使用tail查看error.log中近的 50 条条目。

# tail -n50 /var/log/mysql/error.log

备份数据库

在进行任何数据库更改之前,请先进行备份。除了备份数据库之外,此过程还会验证 WordPress 是否具有正确的数据库凭据。

  1. 使用 SSH 或Vultr 控制台以 root 身份连接到服务器。
  2. 使用grep找到数据库凭据。此命令返回 WordPress 连接信息。验证 DB_HOST 是否为‘localhost’# grep 'DB_USER\|DB_NAME\|DB_PASSWORD\|DB_HOST' /var/www/html/wp-config.php define( 'DB_NAME', 'example_DB_name' ); define( 'DB_USER', 'example_username' ); define( 'DB_PASSWORD', 'example_password' ); define( 'DB_HOST', 'localhost' );
  3. 使用mysqldump备份数据库。当 MySQL 提示时输入数据库密码。此示例在/root/mysqlbak.sql中创建完整数据库备份。您可以选择不同的位置。为了安全起见,请确保备份位于 /var/www 目录之外。# mysqldump -u example_username -p example_DB_name > /root/mysqlbak.sql
  4. 验证备份文件已创建且大小合理,大于几 KB。它是一个文本文件,您也可以使用less检查它。# ls -l /root/mysqlbak.sql # less /root/mysqlbak.sql 如果密码不正确,mysqldump会报错。mysqldump: Got error: 1045: Access denied for user 'example_username'@'localhost' (using password: YES) when trying to connect

重置您的数据库密码

注意:如果 mysqldump 备份成功,请跳过本节。

如果您无法使用wp-config.php中的凭据进行备份,则需要重置数据库密码。仅当 WordPress 信息不正确并且您不知道正确的密码时才重置数据库密码。在继续之前请确保您有服务器快照。

  1. 编辑wp-config.php# nano /var/www/html/wp-config.php
  2. 寻找这条线。define( 'DB_PASSWORD', 'example_password' ); 输入一个新的强密码来代替上面行中的 example_password。不要更改任何其他数据库信息。
  3. 保存文件并退出编辑器。
  4. 验证文件中的数据库信息。确保 DB_HOST 是localhost# grep 'DB_USER\|DB_NAME\|DB_PASSWORD\|DB_HOST' /var/www/html/wp-config.php define( 'DB_NAME', 'example_DB_name' ); define( 'DB_USER', 'example_username' ); define( 'DB_PASSWORD', 'example_password' ); define( 'DB_HOST', 'localhost' );
  5. 停止MySQL。# service mysql stop
  6. 为运行时套接字创建一个文件夹并授予 mysql 用户访问权限。# mkdir -p /var/run/mysqld # chown mysql:mysql /var/run/mysqld
  7. 使用–skip-grant-tables参数启动mysqld_safe并使用&将其分叉到后台。# mysqld_safe --skip-grant-tables &
  8. 您可能需要点击ENTER才能重新获得提示。以 root 身份登录 MySQL。# mysql -u root
  9. 输入以下命令设置新密码。mysql> use example_DB_name; mysql> FLUSH PRIVILEGES; mysql> GRANT ALL PRIVILEGES ON example_DB_name.* TO "example_username"@"localhost" IDENTIFIED BY "new_example_password"; mysql> FLUSH PRIVILEGES; mysql> EXIT
  10. 重新启动 VPS 以验证 MySQL 在启动时是否正常启动。# reboot

修复 WordPress 数据库

您可以通过向wp-config.php添加指令来尝试修复数据库。

  1. 编辑 wp-config.php# nano /var/www/html/wp-config.php
  2. 将 WP_ALLOW_REPAIR 指令插入到“就这样,停止编辑!快乐写博客”行的上方。您会在文件末尾附近找到该行。define( 'WP_ALLOW_REPAIR', true ); /* That's all, stop editing! Happy blogging. */
  3. 保存文件,退出编辑器。
  4. 访问以下 URL,将示例站点名称替换为您的姓名。http://www.example.com/wp-admin/maint/repair.php
  5. 选择“修复数据库”“修复并优化数据库”。这两个选项都会修复数据库。优化还可以从表中删除已删除的行、进行碎片整理并压缩数据库以提高性能。
  6. 完成后,从wp-config.php中删除WP_ALLOW_REPAIR指令以防止未经授权的使用。
滚动至顶部