如何调试WordPress“建立数据库连接时出错”

介绍

Wordpress是世界上最流行的开源内容管理系统之一。 虽然它开始专注于博客,多年来,它已经发展成为一个更灵活的网站平台。 经过近十五年的发展,它是相当抛光和强大的,但问题仍然可以出现。

如果您最近尝试加载Wordpress供电的网站,而是看到一条消息,指出“建立数据库连接错误”,原因通常是以下之一:

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

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

先决条件

本教程假定如下:

  • 您正在运行Wordpress的机器上,您有命令行和sudo访问权限
  • 您的数据库运行在与Wordpress相同的服务器上(典型的自我托管Wordpress设置,较不典型的共享Wordpress托管环境)
  • 您知道您的数据库用户名,密码以及为Wordpress创建的数据库的名称。 这个信息应该是在Wordpress安装的初始设置过程中创建的。

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

调试此问题的第一步是尝试登录到服务器,以查看系统是否正常运行,并且MySQL正在运行。

通过SSH登录到您的服务器,记住用下面的突出部分替换您自己的用户和服务器详细信息:

ssh sammy@your_server_ip

如果您需要帮助登录到服务器,请参阅我们的文章如何使用SSH连接到您的Droplet

注意:如果您确定您的连接详细信息正确无误,但您仍然无法登录,可能是因为您的服务器内存不足或负载过重。 这可能是由于您的网站的流量突然爆发,并将解释WordPress的错误。 您可能需要重新启动服务器才能登录。

现在我们已经成功登录,我们来看看我们的MySQL服务器是否正在运行:

sudo netstat -plt

netstat命令打印有关我们服务器的网络系统的信息。 在这种情况下,我们希望在tcp套接字( -t )上监听程序( -p )的名称来监听连接( -l )。 检查输出的行列表mysqld ,如下所示:

OutputActive 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,特别是)使用mysql d而不是简单的mysql作为服务名称。 酌情替代

MySQL应该开始 要验证,请重新运行上面使用的netstat命令,并检查mysqld进程的输出。

MySQL和Wordpress都需要很好的内存才能正常运行。 如果MySQL由于内存不足而退出,我们应该在其错误日志中看到这样的证据。 我们看看吧:

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

zgrep将搜索日志文件,包括已经被归档为压缩的.tar.gz文件的较旧的日志文件。 我们在/var/log/mysql/目录中的任何error.log*文件中error.log*包含allocate memory的行。

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

如果看到一行或多行如上,MySQL服务器的内存不足而退出。 如果只是一条线,您可能暂时遇到异常流量。 如果有许多错误行,您的服务器会经常变得内存受限。 无论哪种方式,解决方案是迁移到具有更多可用内存的服务器。 在大多数云服务提供商上,以最少的停机时间来升级现有的服务器是件简单的事情。

如果在运行zgrep命令后看不到任何输出,那么您的服务器的内存不会耗尽。 如果您的网站仍然提供错误,请继续阅读我们的WordPress配置的下一步,并确保MySQL登录详细信息正确无误。

第2步 - 检查数据库登录凭据

如果您刚刚将服务器或托管服务提供商之间的Wordpress安装移动,则可能需要更新数据库连接详细信息。 这些存储在服务器上的一个名为wp-config.php的PHP文件中。

首先,我们来看看我们的wp-config.php文件:

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

这将从根目录( / )向下搜索所有内容,并找到任何名为wp-config.php文件。 如果存在这样的文件,则会输出完整路径:

Output/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');

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

mysqlshow -u database_username -p

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

Output+--------------------+
|     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在确定是否启用修复功能时寻找的变量。

保存并关闭文件。 切换到您的浏览器并加载以下地址,确保将您的站点的域或IP地址替换为突出显示的部分:

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

将加载数据库修复页面:

Wordpress数据库修复页面

按“ 修复数据库 ”按钮,您将进入结果页面,您可以在其中查看实时检查和修复:

Wordpress数据库修复结果页

一旦进程完成,请务必再次打开wp-config.php文件,并删除刚刚粘贴的行。

您是否注意到有任何修理? 再次尝试您的网站,并检查错误是否消失。 如果找不到不可修复的问题,您可能需要从备份还原数据库(如果有)。 请参考我们的教程如何在MySQL导入和导出数据库 ,以获得有关如何执行此操作的详细信息。

如果没有发现问题的数据库,那么我们仍然没有发现问题。 这可能是我们刚刚失踪的间歇性问题,或者更为晦涩的事情。 让我们再来一些其他的尝试。

结论

大多数“建立数据库连接错误”问题应通过上述三个步骤解决。 尽管如此,可能会有更多难以捉摸的问题,继续以这种方式呈现。 这里有一些更多的文章可能有助于跟踪和中和这个错误的原因:

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏