wordpress报“建立数据库连接时出错”,主因是wp-config.php中db_name、db_user、db_password、db_host四行配置与宝塔实际设置未逐字符一致,且需同步验证mysql服务状态、用户权限及socket路径匹配。

wp-config.php 里四行配置必须逐字符一致
WordPress 报“建立数据库连接时出错”,八成是 wp-config.php 里的 DB_NAME、DB_USER、DB_PASSWORD、DB_HOST 和宝塔实际设置对不上——不是“差不多”,是必须完全一致。
-
DB_NAME必须和宝塔「数据库」列表中显示的名称一模一样,包括下划线、短横线、大小写;my-site-db≠mysitedb -
DB_USER是宝塔该数据库行对应的「用户名」,不是你登录宝塔的账号,也不是 root -
DB_PASSWORD要从宝塔面板点「修改密码」→勾选「显示密码」后复制,别带前后空格或换行;含$、@等符号不用转义,原样填就行 -
DB_HOST默认填'localhost'即可;若改过 MySQL 配置或用 Docker,才考虑换成'127.0.0.1'或 socket 路径
MySQL 服务状态不能只信宝塔面板
宝塔首页显示 MySQL “运行中”,不代表它真在工作——进程可能卡死、端口没监听、甚至根本没加载配置。
- 终端执行
systemctl status mysqld(CentOS)或systemctl status mysql(Ubuntu),确认输出含active (running)且无 recent crash - 哪怕状态正常,也补一句
netstat -tlnp | grep :3306:没输出说明 MySQL 没监听端口,得查/www/server/mysql/etc/my.cnf里bind-address和skip-networking设置 - 如果
systemctl提示Unit not found,说明 MySQL 没装成功,去翻/www/wwwlogs/install.log搜mysql
用户权限没给全,连上也白连
密码对、服务起、域名通,还是报错?可能是这个用户压根没被授权操作那个库。宝塔创建数据库时自动生成同名用户,但权限未必自动绑定。
- 进宝塔「数据库」页面 → 找到对应数据库 → 点右侧「管理」→ 切到「权限设置」标签页
- 检查该用户名对应的权限列是否为「所有权限」;若为「无」或部分权限,点「设置权限」→ 全选 → 提交
- 更准的验证方式:用 root 登 MySQL 命令行,执行
SHOW GRANTS FOR 'wpuser'@'localhost';,看输出里有没有GRANT ALL PRIVILEGES ON `mydb`.* - 注意反引号:数据库名含短横线(如
my-db)时,授权语句必须写成`my-db`.*,否则不生效
错误信息里带 socket 路径,别急着改密码
报错类似 Can't connect to local MySQL server through socket '/tmp/mysql.sock',大概率不是密码错了,而是 PHP 读的 socket 路径和 MySQL 实际路径不一致。
- 先查 MySQL 实际 socket 路径:
mysql -u root -p -e "SHOW VARIABLES LIKE 'socket';" - 常见真实路径是
/www/server/data/mysql.sock,不是/tmp/mysql.sock - 进宝塔 → 对应 PHP 版本 → 「设置」→ 「配置文件」,加两行:
mysqli.default_socket = /www/server/data/mysql.sockPDO_mysql.default_socket = /www/server/data/mysql.sock - 改完必须点「重启」PHP,不是「重载配置」
localhost,另一个却指向 TCP 监听地址,两边根本对不上路。











