ThinkPHP6 报错 SQLSTATE[HY000] [2002] 连接服务器失败怎么解决?

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

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 服务。

解决方案:配置文件调整

若遇到连接拒绝,可在/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.cnfbind-address设为0.0.0.0,并执行 SQLupdate user set host='%' where user='root'开启远程访问,最后使用ifconfig查看容器 IP 进行连接。

注意事项

Windows 用户需注意my.ini是否误存在于\\windows\\system32目录导致配置冲突;另外需区分localhost127.0.0.1的解析差异,有时使用 IP 地址反而能成功连接。

参考来源

来源:CSDN - 错误:SQLSTATE[HY000] [2002] 由于目标计算机主动拒绝连接而无法建立连接

来源:Server Fault - PDO 连接错误:SQLSTATE[HY000] [2002] 无法通过 socket 连接到本地 MySQL 服务器

来源:InsCode 平台 - 解决 MySQL 连接错误 SQLSTATE[HY000] [2002] Connection refused 的实用指南(2025 年 11 月 5 日)

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值