WordPress 网站 “Error Establishing a Database Connection” 建立数据库连接时出错的解决方法

WordPress 比较常见的一个问题,就是 “Error Establishing a Database Connection”,数据库连接错误。早些年的时候搬瓦工中文网经常会遇到这个问题,总结来说基本都是因为 VPS 配置不行导致数据库挂了,所以就连不上数据库。当然,除了这个原因,可能还会存在其他原因,今天就整理一下能想到的几个原因,方便大家解决这个问题。

文章目录隐藏一、检查数据库是否运行,重启数据库二、检查数据库用户密码是否设置正确三、检查 MySQL 数据库连接是否正常四、尝试修复 WordPress 网站数据库五、添加 SWAP 或者升级配置六、优化 MySQL 设置参数七、经常备份数据库文件八、参考文献以及搬瓦工推荐方案

一、检查数据库是否运行,重启数据库

第一件事我们就是要检查数据库是否正在运行,如果数据库都没运行,那么肯定是会出现错误的。

1、检查数据库是否运行

ps aux | grep mysql

如果返回内容里有数据库的进程,就说明没问题。否则,我们就需要启动一下数据库。以 LNMP 为例,可以使用下面命令启动数据库:

lnmp mysql start

如果启动失败,继续往下看看其他解决方法。

如果不是 LNMP,自行搜索一下怎么启动 MySQL 数据库即可。

2、重启数据库

当然不管数据库有没有运行,我们都可以尝试重启一下数据库来解决问题:

lnmp mysql restart

如果重启之后正常了,就没问题了。如果还是不行,可以继续往下看。

二、检查数据库用户密码是否设置正确

首先检查你添加数据库的时候设置的用户名和密码是否正确。参考《搬瓦工建站教程:使用 LNMP 一键包添加网站以及设置伪静态》这篇文章的添加 MySQL 的部分。

其次检查你 WordPress 网站的 config 文件里设置的用户名和密码是否正确。WordPress 网站的连接详细信息存储在网站根目录的 wp-config.php 文件中。我们首先进入我们网站的根目录,一般是 /home/wwwroot/yourdomain.com,然后就可以看到这个文件。

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

数据库名称:

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

主机名(服务器)(这个一般不用改,就是 localhost,除非你数据库部署到其他主机上面):

/** MySQL hostname */
define('DB_HOST', 'localhost');

比如这是打开的文件示例,找到对应部分即可:

我们需要确保这里设置的内容和我们新建 MySQL 数据库时候设置的内容一致。如果不一致,进行修改。

三、检查 MySQL 数据库连接是否正常

如果觉得一切设置正确,还是连不上,可以检查一下 MySQL 数据库连接是否正常。

在网站根目录新建一个 checkdb.php 文件:

vim checkdb.php

填入以下内容:

<?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 密码。

重置密码参考《搬瓦工建站教程:LNMP 忘记 MySQL 数据库密码后怎么进行重置密码》。如果不是 LNMP,自行搜索一下 MySQL 怎么重置密码即可。

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

四、尝试修复 WordPress 网站数据库

如果通过上述步骤确认你的数据库用户名、密码全部正确,并且测试也正常,那么可能是数据库损坏了。

WordPress 自带数据库修复模式,只需要打开 wp-config.php 文件,在最下面增加这么一行:

define('WP_ALLOW_REPAIR', true);

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

在运行完上述数据库的修复之后,请确保删除添加到 wp-config.php 文件中的代码行,否则任何人都可以运行修复。

当然,如果我们习惯使用命令行,也可以直接在网站根目录输入下面命令进行修复:

wp db repair

五、添加 SWAP 或者升级配置

经过上述一系列操作,基本上都能解决问题了。如果还是存在问题,建议导出数据库文件,然后重装数据库。

下面再介绍一些针对 VPS 的优化设置。比如上面提到的第一点,数据库如果经常不能正常运行,那么很可能是因为没有设置 SWAP,或者是 VPS 配置不够。

1、添加 SWAP

dd if=/dev/zero of=/swapfile bs=1M count=1024   // 此处 1024 是 swap 的大小,可以自己修改。
mkswap /swapfile
swapon /swapfile

然后添加下面这行到 /etc/fstab

/swapfile swap swap defaults 0 0

完成上述操作后,记得重启一下 MySQL。