⭐ 推荐:社区规则条款 V1.0

安装 CMS 时数据库连接失败该怎么排查?

lqyyzz
lqyyzz 观望站长
发布于 2026-10-14 03:50 ·0 浏览 ·2 回复
内容摘要

安装 CMS 时数据库连接失败多因连接参数、账号权限、网络监听或 PHP 扩展问题,可先读报错分类,再依次用 127.0.0.1 排除 socket 干扰、命令行验证账号授权与服务监听、处理 MySQL 8 加密插件不兼容,避免反复重装。

安装 CMS 时数据库连接失败该怎么排查?,本文转载自 GJ站长论坛,原文地址:https://www.gj0.com/thread-1933.html
转载请注明出处,版权归原作者所有。
—/ 5暂无评分
还没有评分,来打第一分吧

全部回复 2

域名注册
域名注册 版主归队站长新人站长 👑年卡会员 1楼 2026-10-14 03:59

结论:这套「四分类」框架够用了,我补几个最容易漏掉的环节——PHP 扩展、服务监听地址、云安全组、面板的授权主机。

1)扩展层别只看 phpinfo:php -m | grep -i mysql 确认 mysqli 和 pdo_mysql 都在。注意 CLI 和 php-fpm 可能读不同的 php.ini,改完必须重启 php-fpm,否则白改。报 could not find driver 基本就是这一层。

2)ss -lntp | grep 3306 没输出,除了服务没启动,还要看 my.cnf 里 bind-address 是不是 127.0.0.1、有没有开 skip-networking。改 0.0.0.0 重启之后,云服务器还要在安全组放行 3306,本机 firewalld/iptables 也经常拦。

3)面板环境有个坑:宝塔这类建库和建用户是分开的,账号默认只允许 localhost 登录,远程连必然 Access denied,得去面板把权限改成「所有人」或加上对应 IP。MySQL 8 报 caching_sha2_password,就按你上面说的换成 mysql_native_password 再 FLUSH PRIVILEGES。

4)最省事的定位法是写个十行 test.php,用 mysqli_connect_error() 把原始错误打出来,比 CMS 的模糊提示直接得多;

juming
juming 归队站长新人站长 #1461 2楼 2026-10-14 04:05
域名注册:结论:这套「四分类」框架够用了,我补几个最容易漏掉的环节——PHP 扩展、服务监听地址、云安全组、面板的授权主机。 1)扩展层别只看 phpinfo:`php…

你补的这四点基本把 CMS 报错看不清的盲区覆盖了,尤其「CLI 和 php-fpm 读不同 php.ini」和「面板账号默认只允许 localhost」这两条,我踩过不止一次。

顺着 test.php 再往下挖一层会更省事:报 Can't connect to local MySQL server through socket 时,别急着改配置,先在 test.php 里打两行 ini_get('mysqli.default_socket') 和 ini_get('pdo_mysql.default_socket'),再在数据库里跑 SHOW VARIABLES LIKE 'socket',两个路径一对比就知道是不是 PHP 找的 sock 和 MySQL 实际生成的对不上。CLI 正常、网页报错,十有八九就是这个;懒人解法是在连接参数里直接写 127.0.0.1:3306,绕开 socket。

另外 caching_sha2_password 那条我会先看 PHP 版本:7.4 以上的 mysqlnd 驱动本身是支持的,报错多是驱动没走 mysqlnd 或者 CMS 自带的旧版 mysqli。能升级驱动就别急着 ALTER USER 降级插件,降回 native_password 是拿安全性换兼容,确有必要再动。

最后提醒一句,改完 php.ini 光重启 php-fpm 不够,宝塔里「PHP 重启」和 MySQL 服务重启是两个按钮,socket 路径改了必须两边都重启才对得上。