phpenv默认仅本地访问,需三步开放远程连接:1. 修改my.ini中bind-address为0.0.0.0并重启mysql;2. 创建'username'@'%'用户并授权、刷新权限;3. windows防火墙放行3306端口;客户端须用主机实际局域网ip(如192.168.1.105)连接,禁用localhost或127.0.0.1。

phpEnv 是 Windows 下的集成环境(类似 XAMPP、WAMP),默认 MySQL 仅监听 127.0.0.1,不开放外网访问。要让其他机器(比如局域网内另一台电脑、手机或远程 PHP 应用)连上它,必须手动改三处:MySQL 绑定地址、用户权限、Windows 防火墙规则。
修改 phpEnv 中 MySQL 的 bind-address
phpEnv 的 MySQL 配置文件通常在:phpEnv\mysql\my.ini(路径以你实际安装位置为准)。打开后找到 [mysqld] 段落,确认是否存在或修改以下行:
- 若已有
bind-address = 127.0.0.1,改为bind-address = 0.0.0.0 - 若该行被注释(前面有
#),去掉#并设为0.0.0.0 - 不要写成
bind-address = *或留空 —— MySQL 8.0+ 不认,会启动失败
改完保存,**必须重启 phpEnv 的 MySQL 服务**(通过 phpEnv 控制面板点击「Restart MySQL」,或右键托盘图标重启)。不重启,配置无效。
给 MySQL 用户添加 @'%' 远程主机权限
phpEnv 默认 root 用户只允许 'root'@'localhost' 登录,'%' 才代表任意远程 IP。登录 MySQL 后执行:
mysql -u root -p
然后运行:
-
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'strong_password';(推荐新建专用用户,别直接改 root) -
GRANT SELECT, INSERT, UPDATE, DELETE ON your_db.* TO 'remote_user'@'%';(按需授权,别轻易用ALL PRIVILEGES ON *.*) -
FLUSH PRIVILEGES;(这步漏掉是常见连接失败原因)
注意:如果 MySQL 是 8.0+,且客户端(如 Navicat 旧版、某些 PHP 环境)报 Client does not support authentication protocol,需额外执行:
ALTER USER 'remote_user'@'%' IDENTIFIED WITH mysql_native_password BY 'strong_password';
放行 Windows 防火墙的 3306 端口
phpEnv 运行在 Windows 上,系统防火墙默认拦截所有入站连接。必须手动放行:
- 打开「控制面板 → Windows Defender 防火墙 → 高级设置」
- 左侧选「入站规则」→ 右侧点「新建规则」→ 选「端口」→ 下一步 → TCP + 特定本地端口
3306→ 下一步 → 选「允许连接」→ 下一步 → 勾选「域」「专用」「公用」(局域网测试至少勾「专用」)→ 命名如「MySQL Remote Access」→ 完成 - 验证是否生效:在另一台局域网电脑命令行运行
telnet your_phpenv_pc_ip 3306,能连上说明端口通了
PHP 连接时填对 IP,别用 localhost 或 127.0.0.1
从外部机器(包括本机其他程序、手机 App、局域网另一台电脑)连接时,$host 必须填 phpEnv 所在电脑的真实局域网 IP(比如 192.168.1.105),不是 localhost,也不是 127.0.0.1 —— 后两者只会走回环,绕过网络栈,连不到你刚配的 0.0.0.0 监听。
示例(PDO):
$pdo = new PDO('mysql:host=192.168.1.105;port=3306;dbname=testdb', 'remote_user', 'strong_password');
容易忽略的一点:如果你的 phpEnv 主机开了多个网卡(比如同时连 Wi-Fi 和以太网),0.0.0.0 虽然监听全部,但客户端必须用其中某一个网卡的实际 IP 地址连接,不能用 127.0.0.1 替代 —— 这个细节卡住很多人。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











