You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows环境XAMPP通过PHP PDO连接局域网Linux MySQL遭拒绝,寻求解决方案

解决PDO连接Linux MySQL时"目标机器主动拒绝连接"的问题

1. 核对连接参数准确性

  • 确保HOST填写的是Linux服务器的局域网IP地址(如192.168.1.100),禁止使用localhost或127.0.0.1(仅指向Windows本机)
  • 确认PORT与MySQL监听端口一致,默认是3306,若修改过需对应填写
  • 检查DBNAME、USERNAME、PASSWORD完全匹配Linux端MySQL的实际配置

2. 验证跨机器网络连通性

在Windows命令提示符执行以下命令:

  • 测试基础网络连通:
ping [你的Linux服务器IP]

若ping不通,优先排查局域网链路问题(如网线连接、路由器配置、Linux服务器状态)

  • 测试MySQL端口可达性:
telnet [你的Linux服务器IP] 3306

若提示"无法打开连接",说明端口被拦截或MySQL未监听该端口

3. 配置MySQL允许局域网访问

  • 登录Linux端MySQL,查看用户权限范围:
SELECT user, host FROM mysql.user WHERE user='[你的用户名]';

若host列是localhost或127.0.0.1,需更新权限允许外部访问:

GRANT ALL PRIVILEGES ON [你的数据库名].* TO '[你的用户名]'@'%' IDENTIFIED BY '[你的密码]';
FLUSH PRIVILEGES;

(%代表允许所有IP访问,也可指定Windows机器的具体IP提升安全性,如192.168.1.50)

  • 修改MySQL配置文件(常见路径:/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf),找到bind-address项:
    将bind-address = 127.0.0.1改为bind-address = 0.0.0.0(监听所有IP)或Linux服务器的局域网IP,之后重启MySQL服务:
sudo systemctl restart mysql

4. 检查Linux服务器防火墙规则

  • 若使用ufw防火墙,开放3306端口:
sudo ufw allow 3306/tcp
sudo ufw reload
  • 若使用iptables,添加放行规则:
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
sudo service iptables save

5. 排查Windows本地防火墙拦截

检查Windows Defender防火墙或第三方防火墙,确保未阻止Apache/PHP发起的3306端口出站请求

内容的提问来源于stack exchange,提问作者Abelardo Alves

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 18:04:50