如何在WordPress中调试“数据库连接错误”错误

介绍

WordPress是世界上最受欢迎的开源内容管理系统之一。 尽管它最初侧重于博客,但多年来,它已发展成为一个总体上更灵活的网站平台。 经过将近15年的发展,它非常精致和可靠,但是仍然出现问题。

如果您最近尝试加载WordPress网站,而看到消息“建立数据库连接时出错»,原因通常是以下之一:

  • 数据库已崩溃,通常是由于服务器上的内存不足。
  • 数据库登录凭据在WordPress配置中不正确
  • WordPress数据库中的表已损坏

让我们一次解决这些问题,以确定它们如何影响您以及如何解决它们。

先决条件

本教程假定以下内容:

  • 在计算机上启动Wordpress,您有一个命令行,然后 sudo Linux访问
  • 该数据库与Wordpress在同一台服务器上运行(通常用于为WordPress设置您自己的服务器,而对于共享WordPress托管则相对较少)
  • 您知道为WordPress创建的数据库用户名,密码和数据库名称。 此信息应在WordPress安装的初始设置期间创建。

第1步-检查服务器内存资源

调试此问题的一个好的第一步是尝试登录服务器以查看系统是否已启动并且MySQL正在运行。

通过SSH登录服务器:

ssh [email protected]_server_ip

如果需要登录服务器的帮助,请参阅如何使用SSH连接到Linux。

注意: 如果您确信自己的配件正确无误,但仍无法登录,则可能是服务器内存不足或负载过重。 这可能是由于您网站的流量突然激增,并且可以解释WordPress错误。 您可能需要重新启动服务器才能登录。

现在我们已经成功登录,让我们检查一下我们的MySQL服务器是否正在运行:

sudo netstat -plt

Команда netstat 显示有关我们服务器网络系统的信息。 在这种情况下,我们需要程序的名称( -p)监听连接( -l)到TCP套接字( -t)。 检查屏幕上的输出 mysqld在下面突出显示:

结论

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 localhost:mysql         *:*                     LISTEN      1958/mysqld
tcp        0      0 *:ssh                   *:*                     LISTEN      2205/sshd
tcp        0      0 localhost:smtp          *:*                     LISTEN      2361/master
tcp6       0      0 [::]:http               [::]:*                  LISTEN      16091/apache2
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      2205/sshd
tcp6       0      0 ip6-localhost:smtp      [::]:*                  LISTEN      2361/master

如果您的输出类似,则表明MySQL正在运行并正在监听连接。 如果没有列出MySQL,请尝试手动启动MySQL。 在大多数系统上,它看起来像这样:

sudo systemctl start mysql

一些Linux发行版(特别是CentOS)使用 mysqld 代替服务 mysql… 根据系统进行更换。

MySQL应该工作。 要检查,请重复命令 netstat 我们在上面使用它并检查了过程的输出 mysqld

MySQL和WordPress需要大量内存才能正常运行。 如果MySQL由于内存不足而崩溃,我们应该在错误日志中看到这一点的证据。 让我们来看看:

zgrep -a "allocate memory" /var/log/mysql/error.log*

zgrep 将搜索日志文件-包括以扩展名存档的旧文件 .tar.gz… 我们正在寻找一个包含 allocate memory,在任何文件中 error.log* 在目录中 /var/log/mysql/

结论

2017-04-11T17:38:22.604644Z 0 [ERROR] InnoDB: Cannot allocate memory for the buffer pool

如果您看到上述一行或多行,则说明MySQL服务器崩溃了,变得不可用。 如果只有一条线路,则可能会暂时遇到异常流量。 如果有很多错误行,则表明服务器经常内存不足。 无论如何,最好的解决方案是迁移到具有更多可用内存的服务器。 对于大多数云提供商而言,只需最少的停机时间即可升级现有服务器,这很简单。

如果在运行命令后看不到任何输出 zgrep,您的服务器出现故障不是因为内存不足。 如果您的网站仍然抛出错误,请继续执行下一步,在此我们将检查WordPress配置并确保MySQL登录信息正确。

第2步-验证登录数据库凭据

如果您刚刚移动了WordPress,并在服务器或主机提供商之间进行选择,则可能需要更新数据库连接详细信息。 它们存储在服务器上的一个名为PHP的文件中 wp-config.php

首先,让我们找到文件 wp-config.php

sudo find / -name "wp-config.php"

该搜索将遍历根目录中的所有内容( /),并会找到一个名为 wp-config.php… 如果存在这样的文件,则完整路径将出现在输出中:

结论

/var/www/html/wp-config.php

现在,使用您喜欢的文本编辑器打开配置文件。 我们将在这里使用编辑器 nano

sudo nano /var/www/html/wp-config.php

这将打开一个充满配置变量和解释性文本的文本文件。 在数据库连接信息的开头:

wp-config.php

/** The name of the database for WordPress */
define('DB_NAME', 'database_name');

/** MySQL database username */
define('DB_USER', 'database_username');

/** MySQL database password */
define('DB_PASSWORD', 'database_password');

根据您的输入,请确保这三个变量正确。 如果看起来不正确,请根据需要进行更新,然后保存并退出( CTRL-O, 然后, CTRL-X 如果您使用 nano)。 即使信息看起来正确,还是值得尝试从命令行连接到数据库。 将详细信息直接从配置文件复制并粘贴到以下命令中:

mysqlshow -u database_username -p

系统将提示您输入密码。 粘贴并单击 ENTER… 如果收到错误 拒绝访问, 您的用户名或密码不正确。 否则命令 mysqlshow 将显示指定用户有权访问的所有数据库:

结论

+--------------------+
|     Databases      |
+--------------------+
| information_schema |
| database_name      |
+--------------------+

确保其中一个数据库与WordPress配置文件中的数据库完全匹配。 如果发生这种情况,则说明您已验证配置正确,并且WordPress应该能够成功登录数据库。 转到您的网站以查看错误已消失。

还是行不通? 接下来要尝试的是修复数据库。

步骤3-恢复WordPress数据库

有时,由于更新失败,数据库崩溃或插件故障,您的WordPress数据库可能会损坏。 此问题可能会以数据库连接错误的形式出现,因此,如果您的问题不是MySQL服务器或配置文件,请尝试还原数据库。

WordPress提供了内置的数据库恢复实用程序。 默认情况下,它是禁用的,因为它没有访问控制,并且可能是安全问题。 我们将启用此功能,进行修复,然后将其禁用。

开启档案 wp-config.php 再次:

sudo nano /var/www/html/wp-config.php

在任何空白行上,插入以下内容:

wp-config.php

define('WP_ALLOW_REPAIR', true);

这定义了一个变量,该变量在WordPress中指定应启用还原功能。

保存并关闭文件。 切换到浏览器并加载以下URL,确保将站点的域或IP地址替换为专用站点:

http://www.example.ru/wp-admin/maint/repair.php

要加载数据库恢复页面:

点击按钮 数据库修复您将被带到结果页面,您可以在其中实时查看收据和维修信息:

WordPress中的数据库修复结果页面

完成此过程后,请确保打开文件 wp-config.php 再次,并删除我们插入的行。

您是否注意到正在进行任何装修工作? 再次尝试您的站点,并检查错误是否消失。 如果发现了不可修复的问题,并且您有可用的数据库备份,则可能需要从备份中还原数据库。 请参阅有关如何在MySQL中导入和导出数据库的教程,以获取有关如何执行此操作的文章的补充。

如果数据库问题没有解决,那么我们仍然没有发现问题。 这些可能是暂时的问题,请参阅此处的其他教程来解决此问题。

结论

大多数“错误建立数据库连接”问题应通过上述三个步骤解决。 但是,再也没有这样的难以捉摸的问题继续以这种方式提出。 以下是一些其他文章,可能有助于发现和消除此错误的原因:

  • 高流量的常见来源(从而降低了性能和错误)是对常见WordPress安装的暴力攻击。 您可以按照有关如何保护WordPress免受XML-RPC攻击的指南来消除攻击。
  • 您可以通过在WordPress安装中实施缓存来节省服务器资源。 WordPress中有许多缓存插件。 我们有关如何设置Redis缓存以加快WordPress速度的教程将向您展示如何设置性能特别出色的Redis缓存。
Sidebar