MySQL未启动或配置错误导致PHP连接失败,需依次检查服务状态、连接参数(host必须为127.0.0.1)、用户权限(含information_schema)、防火墙规则及认证插件兼容性。
php 连不上怎么办先看最常见死因:MySQL 根本没运行。宝塔面板有时会因磁盘满、配置错误或意外重启导致 MySQL 停止,但面板首页“数据库”模块仍显示列表,容易误判为“可用”。
MySQL(如 5.7 或 8.0)→ 点「设置」→ 看右上角状态是否为「正在运行」;不是就点「启动」/www/server/data 权限异常或 my.cnf 配置语法错误(比如多了一个逗号、路径写错)php 连宝塔 MySQL 的连接参数怎么填才对本地 PHP 脚本连宝塔 MySQL,关键不是“能不能连”,而是“连的是哪个实例、用的哪个用户、走的哪条路”。宝塔默认 MySQL 绑定 127.0.0.1,不是 localhost,这点极易踩坑。
host 必须填 127.0.0.1(不能填 localhost,否则 PHP 会尝试 Unix socket,而宝塔默认禁用 socket 文件)port 默认是 3306,但如果改过 MySQL 端口(比如在「MySQL 设置」→「端口」里调成 3307),PHP 里必须显式指定 port=3307
username 和 password 不是宝塔后台登录账号,而是「数据库」页面里你创建的那个用户(比如 myapp_user),且该用户必须授权了对应数据库 + 127.0.0.1 主机php -r "var_dump(new mysqli('127.0.0.1', 'myapp_user', 'xxx', 'myapp_db', 3306));"
mysqli_connect() 报 Access denied
即使账号密码没错,也常因权限粒度太细连不上——宝塔建库时默认只给当前库权限,但某些 PHP 框架(如 Laravel)初始化时会先查 information_schema 或执行 SET NAMES utf8mb4,触发权限拒绝。
SELECT on information_schema.*)mysql_native_password,不是默认的 caching_sha2_password(PHP 7.4 以下原生不支持)ALTER USER 'myapp_user'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'xxx'; FLUSH PRIVILEGES; 再试超时(Connection timed out)不是网络问题,大概率是 SELinux 或防火墙拦了本地回环流量——尤其 CentOS 7/8 宝塔环境默认开启 firewalld,且规则可能误封 127.0.0.1:3306。
立即学习“PHP免费学习笔记(深入)”;
systemctl stop firewalld,再跑 PHP 连接脚本;如果通了,说明是防火墙策略问题firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="127.0.0.1" port port="3306" protocol="tcp" accept',然后 firewall-cmd --reload
skip-networking 
= 1(禁用 TCP/IP),需进 /www/server/mysql/my.cnf 删除该行并重启 MySQL