WordPress数据库连接失败是指网站无法与MySQL或MariaDB数据库建立正常通信,通常表现为页面显示“Error establishing a database connection”或空白页面。
核对 wp-config.php 数据库配置
wp-config.php 是WordPress核心配置文件,其中四个常量必须与数据库实际信息完全一致:DB_NAME 为数据库名称,DB_USER 为数据库用户名,DB_PASSWORD 为数据库密码,DB_HOST 为数据库主机地址,如果其中任意一项填写错误,WordPress就会报告数据库连接失败,使用FTP工具或SSH登录服务器,找到网站根目录下的 wp-config.php,逐行检查引号内的值是否与数据库面板中创建的信息一致,特别注意 DB_HOST 如果填写为 localhost,而实际数据库使用 0.0.1 或远程地址,可能因解析方式不同导致连接失败,密码中含有单引号、反斜杠等特殊字符时,必须正确转义或使用双引号包裹。

确认数据库服务是否运行
数据库服务异常停止是连接失败的常见原因,通过SSH登录服务器,执行以下命令检查MySQL或MariaDB服务状态:
systemctlstatusmysql
如果使用MariaDB,命令为:
systemctlstatusmariadb
若服务未运行,使用 systemctl start mysql 或 systemctl start mariadb 启动,同时检查3306端口是否监听,执行:
ss-tlnp|grep3306
如果没有端口监听信息,说明数据库进程未启动或绑定在其他地址,服务启动失败时查看错误日志,通常位于 /var/log/mysql/error.log 或 /var/log/mariadb/mariadb.log,根据日志中的报错信息定位原因。
验证数据库用户权限
即使数据库服务正常运行,用户权限不足也会阻止连接,登录MySQL命令行:
mysql-uroot-p
执行以下命令查看目标用户的权限:
SHOWGRANTSFOR'数据库用户名'@'主机地址';
确保返回结果包含 ALL PRIVILEGES 或至少包含 SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX 等WordPress运行所需权限,如果权限不足,执行:
GRANTALLPRIVILEGESON数据库名.*TO'数据库用户名'@'主机地址'IDENTIFIEDBY'密码'; FLUSHPRIVILEGES;
修改后刷新权限并重新测试连接,如果用户主机地址设置为 表示允许所有主机连接,但出于安全考虑应与Web服务器IP或域名保持一致。
检查数据库主机地址
当网站和数据库不在同一台服务器时,DB_HOST 必须填写远程数据库服务器的IP地址或域名,而不能使用 localhost,同时需要在远程数据库上授权Web服务器IP连接,例如远程数据库用户的主机部分应为Web服务器IP,如 'webuser'@'203.0.113.10',防火墙必须放行3306端口,并仅对指定IP开放,可以使用以下命令从Web服务器测试远程数据库连通性:
mysql-h数据库主机IP-u数据库用户名-p数据库名
如果提示无法连接,检查数据库服务器的防火墙规则和云服务商安全组设置。
修复损坏的数据库表
数据库表损坏可能导致连接后查询失败,表现为网站打开缓慢或直接提示连接错误,使用WordPress自带的数据库修复功能,在 wp-config.php 文件中临时添加:
define('WP_ALLOW_REPAIR',true);然后访问 https://你的域名/wp-admin/maint/repair.php,选择“修复数据库”或“修复并优化数据库”,修复完成后务必删除该常量,避免安全风险,也可以使用命令行工具进行修复:
mysqlcheck-u用户名-p--auto-repair数据库名
如果InnoDB存储引擎出现崩溃,可能需要手动修改MySQL配置文件启用 innodb_force_recovery 参数,但这属于高级操作,建议先备份数据。
检查服务器资源限制
数据库服务器内存不足、磁盘空间写满或连接数超限都会导致连接失败,执行以下命令检查磁盘空间和内存:
df-h free-h
若磁盘使用率达到100%,清理缓存、日志或扩展磁盘空间,连接数超限时,登录MySQL执行:
SHOWVARIABLESLIKE'max_connections'; SHOWSTATUSLIKE'Threads_connected';
Threads_connected 接近或等于 max_connections,需要增加该值或优化网站减少并发数据库连接,可在MySQL配置文件 /etc/mysql/my.cnf 中调整:
[mysqld] max_connections=200
修改后重启数据库服务。
查看错误日志定位问题
WordPress和数据库的错误日志是排查的关键,在 wp-config.php 中开启WordPress调试模式:
define('WP_DEBUG',true);
define('WP_DEBUG_LOG',true);
define('WP_DEBUG_DISPLAY',false);刷新页面后,查看 wp-content/debug.log 中的错误信息,数据库错误日志通常位于 /var/log/mysql/error.log 或 /var/log/mariadb/mariadb.log,常见错误如“Access denied for user”表示用户名或密码错误,“Can't connect to MySQL server on”表示主机地址或网络问题,“Too many connections”表示连接数超限,根据具体错误信息进行针对性处理。
检查文件权限和所有权
wp-config.php 文件如果权限设置不正确,可能导致Web服务器无法读取配置信息,从而出现数据库连接失败,通过SSH执行:
ls-lwp-config.php
正常权限应为 600 或 640,修改权限:
chmod600wp-config.php
同时确认文件所有者与Web服务器运行用户一致,例如Apache运行用户为 www-data,则执行:
chownwww-data:www-datawp-config.php
如果使用Nginx配合PHP-FPM,需确认PHP-FPM运行用户,常见为 www-data 或 nginx。
检查网站是否被攻破或插件冲突
恶意攻破或插件冲突也可能间接导致数据库连接失败,如果网站短时间内产生大量数据库查询,可能耗尽连接资源,登入网站后台(如果还能访问),停用所有插件并切换回默认主题,观察是否恢复,如果无法进入后台,可通过FTP重命名 wp-content/plugins 目录暂时禁用所有插件,同时检查网站是否感染恶意程序,使用安全插件扫描或检查核心文件完整性。
常见排查命令汇总
以下命令可在排查过程中快速执行:
#检查数据库服务状态 systemctlstatusmysql #测试数据库连接 mysql-h数据库主机-u用户名-p数据库名 #检查端口 ss-tlnp|grep3306 #查看数据库错误日志 tail-f/var/log/mysql/error.log #查看磁盘空间 df-h #检查连接数 mysql-uroot-p-e"SHOWSTATUSLIKE'Threads_connected';"