WordPress 比较常见的一个问题,就是 “Error Establishing a Database Connection”,数据库连接错误。早些年的时候搬瓦工中文网经常会遇到这个问题,总结来说基本都是因为 VPS 配置不行导致数据库挂了,所以就连不上数据库。当然,除了这个原因,可能还会存在其他原因,今天就整理一下能想到的几个原因,方便大家解决这个问题。
一、检查数据库是否运行,重启数据库
第一件事我们就是要检查数据库是否正在运行,如果数据库都没运行,那么肯定是会出现错误的。
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。