搜索全站
安装部署 8 分钟阅读

WordPress安装”建立数据库连接时出错”怎么解决

安装 WordPress 时页面只显示 Error establishing a database connection?本文带你按四步排查数据库地址、库名、账号密码、用户名权限与 MySQL 服务状态,并附测试文件与授权命令,帮你在十分钟内恢复网站正常访问。

U
UFO_PF 2026-10-10 · 阅读 8 分钟
Wo 安装部署
阅读提示
本文约 2,969 字,预计阅读 8 分钟。文中命令与配置均经过实测,可直接参考执行。

引言

刚买完虚拟主机或云服务器,把 WordPress 压缩包解压上传到网站根目录,浏览器打开域名,本该看到亲切的”五分钟安装”界面,结果屏幕上只有冷冰冰的一行英文:Error establishing a database connection。刷新没用,换浏览器没用,后台更是进不去。很多新手第一反应是”程序坏了””空间是假的”,其实这句话翻译过来就是”建立数据库连接时出错”,意思是 WordPress 在启动最开始那一刻,拿着 wp-config.php 里填的账号密码去连 MySQL 数据库,结果压根连不上。它跟主题、插件、文章内容统统无关,问题只会出现在数据库地址、库名、用户名、密码这四样东西上,或者数据库服务本身没开机。只要肯按顺序排查,这个报错绝大多数能在十分钟内解决。

故障原因分析

1. wp-config.php 里的数据库信息填错。 这是最常见的原因。安装时填的库名、用户名、密码、主机地址只要有一个字母不对,WordPress 就完全连不上,而且它不会告诉你”密码错了”,只会给这一句笼统的提示。

2. 数据库主机名(DB_HOST)写得不合适。 有的主机要求写 localhost,有的必须写 127.0.0.1,云数据库厂商经常给的是内网地址或带端口的 xxx.mysql.rds.aliyuncs.com:3306。这里填错就等于把信寄到了错误地址。

3. 数据库用户不存在或没有权限。 数据库建好了,但没把用户和这个库关联起来,或者用户只被授予了连接权限却没有增删改查权限,结果同样连接失败。

4. MySQL / MariaDB 服务没有启动。 尤其是在自己搭建的服务器上,数据库进程崩溃或没设开机自启,WordPress 自然连不上。

5. MySQL 8.0 的认证方式不兼容。 新版 MySQL 默认使用 caching_sha2_password 认证,部分老版本 PHP 的 mysqli 驱动识别不了,表现之一也是连接失败。

分步解决方案

方法一:核对并修正 wp-config.php

用 FTP 或主机文件管理器打开网站根目录下的 wp-config.php,找到下面这几行,逐字核对(注意是英文单引号):

// wp-config.php 中需要重点核对的四行
define( 'DB_NAME', 'database_name_here' );      // 数据库名
define( 'DB_USER', 'username_here' );            // 数据库用户名
define( 'DB_PASSWORD', 'password_here' );        // 数据库密码
define( 'DB_HOST', 'localhost' );                // 数据库主机

// 补充:如果主机商要求指定端口,可写成
// define( 'DB_HOST', '127.0.0.1:3306' );

改完保存,刷新页面。如果主机支持”一键安装”,更稳妥的做法是删掉 wp-config.php,重新访问域名让安装向导生成一次。

方法二:单独写个测试文件验证数据库能否连上

在网站根目录新建 dbtest.php,内容如下,访问 http://你的域名/dbtest.php,它会明确告诉你连接成功还是失败,避免瞎猜:

<?php
// dbtest.php —— 用于快速验证数据库连接,测试后请务必删除
$host = '127.0.0.1';
$user = '这里填用户名';
$pass = '这里填密码';
$db   = '这里填库名';

$link = @mysqli_connect($host, $user, $pass, $db);
if (!$link) {
    die('连接失败:' . mysqli_connect_error());
}
echo '恭喜,数据库连接成功!';

方法三:检查数据库服务是否运行

如果你用的是宝塔面板,进入【软件商店】看 MySQL / MariaDB 是不是处于”已停止”状态,点启动即可。命令行方式:

# Linux 服务器上查看并启动 MySQL
systemctl status mysql
systemctl start mysql       # 若为 MariaDB 则用 mariadb

# Windows 可在"服务"里找 MySQL80 手动启动

方法四:处理用户权限与 MySQL 8 认证方式

用 phpMyAdmin 或命令行登录数据库后,确认用户和库已绑定并授权:

-- 授权用户访问指定数据库
GRANT ALL PRIVILEGES ON 你的库名.* TO '你的用户名'@'localhost' IDENTIFIED BY '你的密码';
FLUSH PRIVILEGES;

如果是 MySQL 8.0 兼容问题,把该用户的认证插件改回旧方式:

ALTER USER '你的用户名'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;

常见踩坑点

  1. 复制密码时带上了空格或换行。 从主机后台复制密码时经常会把结尾的空格一起选中,肉眼完全看不出,连接必然失败。建议手动重输一遍。
  2. DB_HOST 用 localhost 而实际需要 127.0.0.1。 部分环境下 localhost 会走 Unix Socket,若 Socket 路径不对就报错,换成 127.0.0.1 往往立刻恢复。
  3. 云数据库白名单 / 安全组没放行。 数据库在云上时,必须把你服务器的公网 IP 加入访问白名单,否则请求会被直接拦掉。
  4. 改完文件没真正保存。 有的主机文件管理器点保存后只是缓存,或改错了位置(比如改到了备份目录),确认改动确实写在网站根目录那份文件里。
  5. 密码里含特殊字符导致语法出错。 密码里有单引号 ' 时会提前闭合字符串,需要在 PHP 里转义或换一个不含单引号的密码。
  6. 同一台服务器上跑着多个站点。 如果你在服务器上部署了不止一个 WordPress,很容易把 A 站的数据库信息填进 B 站,动手前先确认自己改的到底是哪个站点的配置。

总结

“建立数据库连接时出错”看着吓人,本质却是个纯粹的配置问题,它跟 WordPress 本身一点关系都没有。排查顺序建议固定为:先核对 wp-config.php 的四项参数,再用测试文件确认能否连上,然后检查数据库服务有没有启动,最后处理用户权限和 MySQL 8 认证方式。只要你把数据库地址、库名、用户名、密码这四样东西一一对齐,Error establishing a database connection 这个拦路虎通常当场就被解决。修好之后,别忘了把测试用的 dbtest.php 文件删除,避免把数据库信息暴露在公网上。平时也建议把数据库密码设得复杂一些,并养成每次改动前备份 wp-config.php 的习惯,这样下次再遇到类似问题就不至于手忙脚乱。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。