phpEnv默认仅允许127.0.0.1连接MySQL,局域网访问需三步:①修改my.ini中bind-address为0.0.0.0并重启MySQL;②授权用户如GRANT ALL ON . TO 'root'@'192.168.1.%'并FLUSH PRIVILEGES;③开放Windows防火墙3306端口,PHP代码中使用实际局域网IP而非localhost。

phpEnv 默认只允许本地(127.0.0.1)连接 MySQL,直接用局域网 IP 访问会报错 ERROR 1130: Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server。必须手动放开权限、改配置、开防火墙端口,三者缺一不可。
修改 phpEnv 的 MySQL 绑定地址
phpEnv 的 MySQL 配置文件通常位于 phpEnv\MySQL\my.ini(Windows)或 phpEnv/MySQL/my.cnf(Linux/macOS 模拟环境)。找到 bind-address 这一行:
- 如果它是
bind-address = 127.0.0.1,直接注释掉整行(前面加#)或改成bind-address = 0.0.0.0 - 不要留空,也不要写成
localhost—— 这会导致仅支持 Unix socket 或 IPv6 回环,局域网 IP 仍连不上 - 改完必须重启 phpEnv 的 MySQL 服务(通过 phpEnv 控制面板或命令行执行
phpenv restart mysql)
为局域网 IP 创建或授权 MySQL 用户
仅改绑定地址还不够。MySQL 默认的 root@localhost 用户不接受来自其他 IP 的连接。必须显式授权:
- 用 phpEnv 自带的 MySQL 客户端或命令行登录:
mysql -u root -p(密码是 phpEnv 初始化时设置的) - 执行授权语句,例如允许
192.168.1.0/24网段所有设备访问:GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY 'your_password'; - 更宽松但需谨慎:允许任意局域网 IP(不推荐用于生产):
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password'; - 务必执行
FLUSH PRIVILEGES;刷新权限表,否则授权不生效
开放 Windows 防火墙的 3306 端口
即使 MySQL 允许连接,Windows 防火墙默认会拦截外部对 3306 端口的请求。必须手动放行:
- 打开「控制面板 → Windows Defender 防火墙 → 高级设置」
- 左侧选「入站规则」→ 右侧点「新建规则」→ 选「端口」→ 下一步
- 输入
TCP和端口号3306,下一步 - 选择「允许连接」,下一步;域/专用/公用网络按需勾选(局域网一般勾「专用」即可),下一步并命名(如
MySQL-phpEnv-3306) - 确认规则状态为「已启用」
PHP 代码里用 IP 而不是 localhost 连接
在局域网另一台机器上用 PHP 连 MySQL 时,$host 参数不能写 localhost 或 127.0.0.1,必须填运行 phpEnv 的那台电脑的真实局域网 IP(如 192.168.1.105):
$conn = mysqli_connect('192.168.1.105', 'root', 'your_password', 'testdb', 3306);
if (!$conn) {
die('连接失败:' . mysqli_connect_error());
}
注意:如果 phpEnv 启用了多版本 MySQL,确认你改的是当前启用版本的 my.ini;授权用户时也建议用独立用户名(如 lan_user)而非 root,避免暴露高权限账户。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











