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

MySQL公网IP访问失败求助:本地及外部主机可正常连接

解决同公网IP下通过公网地址访问MySQL的问题

问题核心

这是**NAT回环(Hairpin NAT)**导致的:家用路由器默认不支持内部主机通过公网IP访问同一公网下的内部服务器,数据包发出后无法正确路由返回。

解决方案

方案1:在PFSense配置Hairpin NAT

  • 登录PFSense管理界面,进入Firewall > NAT > Port Forward
  • 找到已有的MySQL(3306端口)转发规则,复制该规则
  • 修改复制后的规则参数:
    • Interface:选择连接家用路由器的局域网接口
    • Source:设置为你的个人电脑所在子网(例如192.168.1.0/24,根据实际网段调整)
    • Destination:保持公网IP不变
    • Redirect Target IP:填写MySQL服务器的内网IP
    • Redirect Target Port:3306
  • 保存并应用规则

方案2:修改PC本地Hosts文件(快速临时解决)

直接让PC将公网IP解析为MySQL服务器的内网IP,绕过公网路由:

  1. 打开Hosts文件:
    • Windows:C:\Windows\System32\drivers\etc\hosts
    • Linux/macOS:/etc/hosts
  2. 添加一行映射(替换为你的实际IP):
    192.168.2.10  123.45.67.89
    
    注:192.168.2.10是MySQL服务器内网IP,123.45.67.89是你的公网IP
  3. 刷新DNS缓存:
    • Windows:执行命令 ipconfig /flushdns
    • Linux:执行命令 systemctl restart systemd-resolved
    • macOS:执行命令 dscacheutil -flushcache

方案3:确认MySQL的访问权限与绑定地址

  • 登录MySQL服务器,检查用户权限:
    SELECT user, host FROM mysql.user;
    
    确保存在允许PC所在网段(如192.168.1.%)或所有IP(%)访问的用户。若没有,创建并授权:
    CREATE USER 'your_user'@'192.168.1.%' IDENTIFIED BY 'your_password';
    GRANT ALL PRIVILEGES ON your_db.* TO 'your_user'@'192.168.1.%';
    FLUSH PRIVILEGES;
    
  • 检查MySQL配置文件(my.cnf/my.ini)中的bind-address,设置为0.0.0.0(允许所有IP连接),然后重启MySQL服务:
    # Linux
    systemctl restart mysql
    # Windows
    net stop mysql && net start mysql
    

内容的提问来源于stack exchange,提问作者Game Hounds Interactive

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:48:21