WordPress建立数据库连接时出错终极解决方案 - 闪电博

来源: WordPress建立数据库连接时出错终极解决方案 – 闪电博

“ 建立数据库连接时出错 ”可能是WordPress用户可能遇到的最常见和最可怕的错误之一。这绝对与死亡白屏(WSOD)息息相关。此错误意味着您的网站不再通信或可以访问WordPress数据库,整个网站瘫痪。

对于这样的错误,站长切勿掉以轻心的事情,应该立即尝试解决此问题,直接影响流量,SEO等等。但不用担心,今天我们将讨论导致此错误的一些常见情况,以及对应的解决方案。

建立数据库连接有什么错误?

WordPress网站上的所有信息,例如发布数据,页面数据,元信息,插件设置,登录信息等,都存储在MySQL数据库中。唯一没有存储的数据是媒体内容,例如图像,以及主题/插件/核心文件,例如index.php,wp-login.php等。当有人访问您的网站时,PHP会在页面上执行代码并从数据库中查询信息,然后将其显示到访客浏览器中。

如果由于某种原因这无法正常工作,则将出现建立数据库连接时出错,如下所示。整个页面空白,因为连接无法正常工作,无法检索任何数据以呈现页面。这不仅破坏了网站的前端,而且导致无法访问WordPress仪表板。

但是,访客可能不会立即在前端看到此错误。那是因为站点缓存还可供访问,直到缓存过期为止。

建立数据库连接时出错

建立数据库连接时出错

导致此错误的常见情况

以下是一些常见原因,后面我们会根据这些常见原因,给出不同的解决方案。

  • 最常见的问题是数据库登录凭据不正确。WordPress网站需要使用数据库相关登录信息来连接到其对应的MySQL数据库。
  • 数据库已损坏。由于主题,插件可安装卸载如此之多,长年累月的不断删除和安装,有时会导致数据库损坏。这可能是由于表丢失或个别损坏,或者是某些信息被意外删除了。
  • WordPress安装中可能存在损坏的文件
  • 数据库服务器问题。Web主机端可能有很多问题,例如数据库因流量高峰而过载或由于并发连接过多而无法响应。实际上,对于共享主机,这很常见,因为许多网站共享一台主机的资源。

如何修复“建立数据库连接时出错”

在开始对错误进行故障排查之前,建议您首先进行数据库备份,因为以下许多建议涉及操作数据库中的信息。无论你的技术水平如何,在尝试修改WordPress网站数据库之前,都应始终进行备份。

您可以使用WordPress备份插件(例如VaultPress或WP Time Capsule)来备份文件和数据库。

如果是宝塔面板用户,那就网站文件及数据库备份就很简单了,进入宝塔控制面板,在左边菜单找到“计划任务”,进入界面找到备份数据库和备份网站,手动执行即可。

备份WordPress网站

备份WordPress网站

当然你还可以通过SFTP等工具,进入服务器执行手动备份网站文件,及通过phpMyAdmin手动备份MySQL数据库。备份成功后,就该开始对“建立数据库连接时出错”问题进行故障排除了。

参考阅读:《使用BackWPup插件备份WordPress教程》、《如何安全备份WordPress博客网站数据?

1.检查数据库登录凭据

首先要做的是检查以确保WordPress配置文件的数据库登录凭据正确。这是迄今为止“建立数据库连接时出错”报错的最常见原因,特别是在迁移网站到新的托管服务提供商之后。WordPress网站的连接详细信息存储在wp-config.php文件中,该文件通常位于WordPress网站的根目录下。

它包含四个重要信息,这些信息都必须正确才能成功进行连接数据库。

数据库名称

// ** MySQL settings ** //
/** The name of the database for WordPress */
define(‘DB_NAME’, ‘xxxxxx’);

数据库用户名

/** MySQL database username */
define(‘DB_USER’, ‘xxxxxx’);

数据库密码

/** MySQL database password */
define(‘DB_PASSWORD’, ‘xxxxxxxxx’);

主机名(服务器)

/** MySQL hostname */
define(‘DB_HOST’, ‘localhost’);

要访问wp-config.php文件,您可以通过SFTP连接到站点并浏览到站点的根目录。或者,如果您使用的是宝塔,则可以进入宝塔控制面板单击“文件”,浏览到站点的根目录,然后右键单击以编辑文件。

宝塔文件管理

宝塔文件管理

以下是打开文件后的示例。

wp-config.php文件数据库访问凭证

wp-config.php文件数据库访问凭证

现在,您需要对照当前值及服务器数据库真实值,以确保它们正确无误。对于宝塔用户,请按照以下说明进行操作。

检查宝塔面板中的数据库凭据

您需要登录宝塔面板,进入数据库即可找到网站对应的数据库,找到数据库名、用户名及密码等信息 。

宝塔面板查看数据库账号密码

宝塔面板查看数据库账号密码

然后核对wp-config.php文件的对应信息,确保两边的信息一致即可,非常方便。(或者这也就是国内众多站长选择使用宝塔面板的原因)

检查cPanel面板中的数据库凭据

如果你是使用cPanel管理主机,整个步骤稍微有点复杂。

首先要检查的是数据库名称。为此,您需要进入cPanel控制面板登录phpMyAdmin 。

cPanel控制面板的phpMyAdmin

cPanel控制面板的phpMyAdmin

在左侧菜单找到你的网站对应的数据库名称。忽略“information_schema”数据库,因为这是主机使用的数据库。然后,将该名称与wp-config.php文件中的DB_NAME值进行比较。如果它们匹配,那么这不是问题。如果它们不匹配,那么您需要更新wp-config.php文件。

cPanel 数据库名称

cPanel 数据库名称

您还可以通过确保数据库是否包含你网站的URL来验证这是正确的数据库。只需单击数据库,然后单击wp_options表(出于安全目的,此名称可能稍有不同,例如wpxx_options)。在表格的顶部,您将看到网站URL和名称的值。如果这些与您当前站点匹配,说明这个是你的网站的数据库。

在phpMyAdmin检查网站URL

在phpMyAdmin检查网站URL

如果数据库名称正确,但是在建立数据库连接时仍然出现错误,那你还需要检查用户名和密码。为此,你需要在WordPress网站的根目录中创建一个新的PHP文件(随意命名,例如checkdb.php),并输入以下代码,需使用wp-config.php文件中的值替换为db_user和db_password的值。

<?php
$test = mysqli_connect(‘localhost’, ‘db_user’, ‘db_password’);
if (!$test) {
die(‘MySQL Error: ‘ . mysqli_error());
}
echo ‘Database connection is working properly!’;
mysqli_close($testConnection);

浏览器访问https://yourdomain.com/checkdb.php。如果收到“MySQL Error: Access denied(MySQL错误:访问被拒绝)”,则说明您的用户名或密码错误,您将需要继续执行下一步以重置凭据。

MySQL错误:访问被拒绝

MySQL错误:访问被拒绝

但如果是“Database connection is working properly.(数据库连接正常工作)”,则说明数据库用户名和密码正确。完成测试后,请确保删除此文件。

数据库连接正常工作

数据库连接正常工作

如果确定数据库用户名和密码错误,接下来您需要重置用户名和密码。在cPanel中,点击“MySQL数据库”。

cPanel 控制面板之MySQL数据库

cPanel 控制面板之MySQL数据库

向下滚动并创建一个新的MySQL用户。尝试选择唯一的用户名和密码(可以使用提供的密码生成器工具生成高强度密码),以免轻易被猜中。然后点击“Create User”。或者,您也可以在此界面上更改当前数据库用户的密码。

创建MySQL用户

创建MySQL用户

然后向下滚动并将新用户添加到数据库中。下一个界面将询问您要分配的特权,选择“All Privileges(所有权限)”。

使用cPanel新增数据库用户

使用cPanel新增数据库用户

然后使用这些新凭据并更新至wp-config.php文件(更新DB_USER和DB_PASSWORD值)。到此,你也可以使用前面提到的测试文件验证数据库凭证信息是否正确。但如果这未能解决问题,可能是主机名(DB_HOST)错误。某些主机使用不同的值,你可以参阅一些常见数据库主机值列表,或者查看主机相关文档及联系主机提供商提供。有些人可能还会使用127.0.0.1而不是localhost。

如果您已完成上述所有操作,但仍是“建立数据库连接时出错”,继续往下看。

2. 修复损坏的数据库

在某些情况下,可能是数据库已损坏。有时(尽管不是很经常)会发生这种情况,因为随着时间的推移,新插件和主题会不断添加/删除数百张数据表。如果您尝试登录WordPress网站的仪表板并收到以下错误,则表明您的数据库已损坏:“一个或多个数据库表不可用。数据库可能需要修复。” 重要的是要注意,您可能只会在访问WordPress管理后台才看到此错误,而在前端仅看到建立数据库连接错误提示。

WordPress实际上提供可以启动的数据库修复模式。只需将以下内容添加到wp-config.php文件的底部。

define(‘WP_ALLOW_REPAIR’, true);

WordPress修复模式

WordPress修复模式

然后浏览器访问WordPress网站地址:https : //yourdomain.com/wp-admin/maint/repair.php。在页面你可以选择“修复数据库”或“修复并优化数据库”。由于您目前可能正在对站点进行故障排除,因此建议使用“修复数据库”选项,更高效。

WordPress修复数据库

WordPress修复数据库

在运行完上述数据库的修复之后,请确保删除添加到wp-config.php文件中的代码行,否则任何人都可以运行修复。如果您使用cPanel,则还可以从MySQL数据库界面中运行修复。

cPanel修复数据

cPanel修复数据

或者,您也可登入phpMyAdmin进行修复。只需登录phpMyAdmin,选择需要修复的网站对应的数据库,然后选择所有表。然后从下拉菜单中单击“修复表”。这实际上只是在运行REPAIR TABLE命令。

通过phpMyAdmin修复表

通过phpMyAdmin修复表

最后,你想更“装逼”些,还可以选择使用WP-CLI通过以下命令运行修复:

wp db repair

3. 修复损坏文件

“建立数据库连接时出错”另外一个可能原因是文件已损坏。无论这是由于通过FTP传输文件的问题,黑客获得了访问您的站点的权限还是主机的问题,您都可以快速解决此问题。特别提醒,尝试此操作之前先备份您的网站。

基本上,您只需要替换WordPress的核心版本,无需理会插件,主题或媒体。你可以通过访问WordPress.org下载最新版本的WordPress

下载WordPress

下载WordPress

在您的计算机上解压缩该文件,然后删除wp-content文件夹以及wp-config-sample.php文件。

删除wp-content 目录及WP初始配置文件

删除wp-content 目录及WP初始配置文件

然后,通过SFTP将其余文件上传到您的站点,覆盖现有文件。这将替换所有有问题的文件,并确保您拥有干净且未损坏的新文件。建议这样做后清除浏览器缓存。然后检查您的WordPress网站以查看错误是否仍然存在。

4. 数据库服务器问题

如果上述方法均不能帮助您解决问题,那么强烈建议您与托管服务提供商联系,因为这可能是数据库服务器的问题。例如,如果数据库并发连接太多,则可能会产生错误。因为很多主机在服务器上都限制了一次允许连接的数量。利用缓存插件可以帮助最大程度地减少您站点上的数据库交互。

这个问题在共享主机上经常发生,因为理论上其他人可能会影响您的站点。这是因为共享主机共同使用服务器上的所有资源。始终建议尽可能使用VPS主机来搭建WordPress网站,至少主机资源由自己分配利用而不会变得人满为患。独立主机通常对环境进行微调,即可处理专门针对WordPress网站的大量流量。

5. 恢复至最近备份

最后在情非得已之时,恢复最近备份数据。在某些情况下,如果无需担心发生错误之时与上一次备份之间产生的数据,这可能是解决问题的较快方法。许多服务器提供商都提供备份数据恢复支持。请记住,您可能需要同时还原数据库和文件。

如果您是宝塔用户,则可以通过宝塔控制面板的计划任务,创建备份数据库或者备份网站计划任务,支持按周期定时备份,非常方便。

宝塔控制面板备份计划

宝塔控制面板备份计划

如果是恢复数据库备份,您只需要进入宝塔控制面板,进入数据库菜单,找到你需要恢复的数据库,点击“有备份”,选择需要恢复的备份版本,点击“恢复”即可。

WordPress数据库恢复

WordPress数据库恢复

如果是恢复网站备份,则可以通过访问宝塔控制面板-文件,进入/www/backup/site目录,找到网站备份压缩包,将压缩包解压到对应网站目录即可。

WordPress网站数据恢复

WordPress网站数据恢复

小结

如您所见,有很多方法可以解决WordPress中“建立数据库连接时出错”问题。最常见的错误是wp-config.php文件中设置的数据库凭据不正确,为此检查以确保正确无误是应该作为第一步。无论是由于哪个因素导致“建立数据库连接时出错”,希望上述步骤可以帮助您恢复网站的正常运行。请记住,如果需要,应始终对网站进行备份以还原站点。

您的WordPress站点是否也曾遭遇“建立数据库连接时出错”?当时导致该错误的原因是什么?你又是如何解决?不妨在下方评论,与其他网友一起分享讨论。

赞(0) 打赏
分享到: 更多 (0)

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

支付宝扫一扫打赏

微信扫一扫打赏