mysql服务未运行是10061错误最常见原因,需先检查windows的services.msc或linux的systemctl status mysqld,若为停止状态则启动服务。

MySQL 服务根本没在运行
10061 错误最常见、也最容易被忽略的原因:MySQL 进程压根没起来。不是配置问题,不是权限问题,就是服务没启动。
Windows 下打开 services.msc,找名字带 MySQL 的服务(可能是 MySQL80、mysql 或你自定义的名称),右键看「状态」——如果显示「已停止」,直接「启动」;如果启动失败,右键「属性」看「启动类型」是否为「自动」,再检查「可执行路径」是否指向正确的 mysqld.exe。
Linux/macOS 下执行:
sudo systemctl status mysqld或
sudo service mysql status。若显示
inactive (dead),就运行 sudo systemctl start mysqld。
phpEnv 默认绑定 localhost,但 MySQL 只监听 127.0.0.1 或 0.0.0.0?
phpEnv 是集成环境,它调用 MySQL 客户端时默认走 localhost。而 MySQL 对 localhost 和 127.0.0.1 的处理机制不同:localhost 会强制走 socket 文件(Unix)或命名管道(Windows),127.0.0.1 才走 TCP 端口。一旦 socket 路径错、权限不对,或 MySQL 配置里禁用了 socket,就会报 10061。
验证方式:在命令行手动试连:
→ 成功:mysql -h 127.0.0.1 -u root -p
→ 失败:mysql -h localhost -u root -p
说明问题出在 socket 层。
解决建议:
• phpEnv 的数据库连接配置中,把 host 从 localhost 改成 127.0.0.1
• 检查 MySQL 配置文件(my.ini 或 my.cnf)里是否有 skip-networking=1(必须删掉)
• 确保 bind-address 至少包含 127.0.0.1,不要写成 0.0.0.0 后又没开防火墙(开发机可设为 127.0.0.1 最安全)
MySQL 8+ 的认证插件不兼容 phpEnv 自带的旧客户端
phpEnv 如果捆绑的是较老版本的 PHP(比如 7.2 或更早),其内置的 MySQLi/PDO 扩展可能不支持 MySQL 8 默认的 caching_sha2_password 插件,导致握手失败,表现就是连接超时或直接拒绝,错误码仍可能映射为 10061。
确认方法:登录 MySQL 执行:
SELECT user, host, plugin FROM mysql.user WHERE user = 'root';
若看到
caching_sha2_password,就是它。
临时解决(仅开发环境):
• 运行:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
• 紧接着执行:FLUSH PRIVILEGES;
• 重启 MySQL 服务
注意:不要对生产环境的远程用户执行此操作;也不要在未确认 phpEnv 中 PHP 版本的前提下盲目改插件。
防火墙或安全软件拦截了 3306 端口
即使服务起来了、配置也对,Windows Defender、第三方杀软、甚至某些“网络优化工具”会静默拦截 3306 的本地回环通信,尤其在重装系统或更新后容易触发。
排查步骤:
• 临时关闭 Windows 防火墙,再试 phpEnv 连接
• 检查杀毒软件是否启用「网络防护」「TCP 连接监控」类功能,添加 mysqld.exe 和 php-cgi.exe(或你的 Web 服务器进程)为信任
• 在命令行运行:netstat -ano | findstr :3306,确认端口确实在监听,且 PID 对应的是 mysqld
如果 netstat 查不到 3306,说明 MySQL 根本没绑定到 TCP —— 回头重点检查 skip-networking 和 bind-address 配置项是否被注释或写错。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











