ThinkPHP6 报错 SQLSTATE[HY000] [2002] 连接服务器失败怎么解决?
ThinkPHP6 及 PHP 项目出现SQLSTATE[HY000] [2002]错误时,根据 2025 年 11 月 5 日的最新排查指南,核心原因通常是数据库服务未启动或默认端口3306被防火墙拦截。
原因分析
该错误码表示 PDO 连接器无法连接到数据库服务器。根据 2024 年 10 月 23 日的技术记录,常见诱因包括主机名解析失败、指定端口与服务器配置不匹配,或 Linux 下 socket 文件路径错误(如/var/run/mysqld/mysqld.sock)。
解决方案:检查服务与端口
在 Linux 系统执行systemctl status mysql确认服务状态,并使用netstat -tulnp | grep mysql验证监听端口。若服务未运行,需在 Windows 服务管理工具(services.msc)中启动 MySQL 服务。
ThinkPHP6 报错 SQLSTATE[HY000] [2002] 连接服务器失败怎么解决?
解决方案:配置文件调整
若遇到连接拒绝,可在/etc/mysql/my.cnf的 mysqld 部分设置back_log=1000,并通过命令sudo sysctl -w net.core.somaxconn=1024提高系统连接限制,同时编辑/etc/sysctl.conf确保重启生效。
解决方案:Docker 环境特殊处理
容器内需修改/etc/mysql/mysql.conf.d/mysqld.cnf将bind-address设为0.0.0.0,并执行 SQLupdate user set host='%' where user='root'开启远程访问,最后使用ifconfig查看容器 IP 进行连接。
ThinkPHP6 报错 SQLSTATE[HY000] [2002] 连接服务器失败怎么解决?
注意事项
Windows 用户需注意my.ini是否误存在于\windows\system32目录导致配置冲突;另外需区分localhost与127.0.0.1的解析差异,有时使用 IP 地址反而能成功连接。
参考来源
来源:CSDN - 错误:SQLSTATE[HY000] [2002] 由于目标计算机主动拒绝连接而无法建立连接
ThinkPHP6 报错 SQLSTATE[HY000] [2002] 连接服务器失败怎么解决?
来源:Server Fault - PDO 连接错误:SQLSTATE[HY000] [2002] 无法通过 socket 连接到本地 MySQL 服务器
来源:InsCode 平台 - 解决 MySQL 连接错误 SQLSTATE[HY000] [2002] Connection refused 的实用指南(2025 年 11 月 5 日)

浙公网安备 33010602011771号