10061错误主因是mysql服务未实际运行或端口被占,需依次检查mysqld进程是否存在、手动运行mysqld --console验证初始化、确认my.ini中datadir路径有效、bind-address与端口配置正确、php扩展加载正常,并用netstat验证3306监听状态。

10061 错误在 phpEnv 中基本不是 MySQL 权限或网络问题,而是服务根本没起来,或者端口被占、配置没生效。
phpEnv 启动后 MySQL 仍报 10061:先确认服务状态
phpEnv 是集成环境,MySQL 默认不自动开机自启,也不一定随面板启动。常见现象是点击“启动”按钮后看似成功,但 mysqld 进程实际未运行。
- 打开任务管理器 → 查看“进程”页,搜索是否有
mysqld.exe(Windows)或mysqld(Linux/macOS 模拟环境) - 进 phpEnv 安装目录的
MySQL\bin\下,手动执行:mysqld --console—— 如果立刻退出或报错(如找不到data目录、my.ini语法错误),说明初始化失败 - 检查
MySQL\my.ini中的datadir路径是否存在且可读写;若不存在,需先运行mysqld --initialize-insecure --user=mysql初始化
phpEnv 默认禁止远程连接:改 bind-address 不够,还得开用户权限
phpEnv 的 my.ini 通常默认 bind-address = 127.0.0.1,即使改成 0.0.0.0,MySQL 8+ 还会因用户 host 限制拒绝外部 IP 连接。
- 编辑
MySQL\my.ini,找到并修改:bind-address = 0.0.0.0,保存后重启 phpEnv 的 MySQL 服务 - 用 phpEnv 自带的 phpMyAdmin 或命令行登录 MySQL(host=127.0.0.1,用户 root,默认空密码或面板设置的密码)
- 执行授权语句(以允许任意 IP 连接为例,生产环境请限定 IP):
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'strong_pass';GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;FLUSH PRIVILEGES; - MySQL 8+ 用户默认认证插件是
caching_sha2_password,PHP 7.4 以下可能不兼容,可临时降级:ALTER USER 'remote_user'@'%' IDENTIFIED WITH mysql_native_password BY 'strong_pass';
PHP 代码连不上时:别只盯数据库配置,先查端口和防火墙
phpEnv 默认 MySQL 端口是 3306,但部分版本(尤其旧版)可能设为 3307 或被其他软件占用。错误提示里 “on 'localhost' (10061)” 实际是 Windows 套接字错误码,代表“连接被拒绝”,不等于“端口不通”,而是“压根没服务监听该地址+端口组合”。
- 用命令验证端口是否真在监听:
netstat -ano | findstr :3306(Windows)或lsof -i :3306(macOS/Linux) - 如果没输出,说明 MySQL 没监听;如果有但 PID 对应的不是
mysqld,说明端口被占 —— 记下 PID,在任务管理器中结束对应进程 - Windows 防火墙默认放行本地回环,但若 PHP 脚本走的是 IPv6(::1)而 MySQL 只监听 IPv4(127.0.0.1),也会触发 10061;统一用
127.0.0.1替代localhost测试 - PHP 连接时显式指定端口更稳妥:
$mysqli = new mysqli('127.0.0.1', 'remote_user', 'strong_pass', '', 3306);
phpEnv + 远程访问场景下的典型陷阱
很多人想让局域网另一台电脑通过 phpEnv 的 MySQL,却忽略 phpEnv 本质是单机开发环境,没有内置 SSH 隧道或反向代理能力。它暴露 3306 到外网等于裸奔。
- phpEnv 的 MySQL 无 TLS 支持,传输密码明文 —— 千万别在公网开放 3306
- 若必须远程调试,优先用 SSH 端口转发:
ssh -L 3307:127.0.0.1:3306 user@your-phpenv-pc-ip,然后本地连localhost:3307 - phpEnv 的 Apache/Nginx 和 MySQL 共享同一套服务管理逻辑,有时“MySQL 启动失败”会导致整个面板显示绿色对勾,但实际只有 Web 服务在跑
- 修改
my.ini后必须通过 phpEnv 面板“重启 MySQL”,直接双击mysqld.exe启动的服务不会被面板识别,后续操作可能冲突
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











