我有一个 mysql 服务器,网络上的几台计算机通过静态 ip 192.168.1.# 在本地访问该服务器。我需要从我们的 Web 服务器访问 mysql 服务器,以便我可以通过网站后端运行数据同步。我已经设置了一个 dyndns 地址来遵循我们网络的公共 ip,并将防火墙配置为将我们路由器的端口转发到 mysql 服务器。这工作正常,因为我看到访问请求被 mysql 服务器计算机上的 shorewall 规则阻止。如果我(暂时)删除 mysql 服务器计算机上的所有防火墙保护以测试我是否可以正常访问该计算机,但仍然无法访问它,连接只是超时。我不知道还需要在 mysql 服务器上设置什么才能允许此访问。
我的 mysql 用户表允许我的用户从任何主机访问数据库。我的 my.cnf 文件将 mysqld 设置为 bind-address=192.168.1.# 并禁用 skip-networking
我已经工作和寻找解决方案好几天了。任何帮助、链接或建议都将不胜感激。
如果任何其他信息有帮助,我很乐意提供任何信息来让今天能正常工作。感谢您的关注,希望对您有所帮助。
答案1
附注:出于对梅林胡须的爱——请确保使用 SSL 或 stunnel
答案2
如果连接超时,则不是 MySQL 设置。
您使用什么路由器和防火墙?
您确定 NAT 配置正确吗?MySQL 服务器能够路由到路由器吗?
答案3
我不会将 mysql 绑定到 ip 地址。您是否也希望能够在本地访问它?如果是这样,请注释掉 bind-address。
接下来从另一台本地机器输入:
nmap mysqlserveripaddress
其中 mysqlserveripaddress 是您的 mysql 服务器的 ip 地址。如果 pot 3306 或 mysql 已打开,则您已准备好对路由器 (NAT/FW) 设置进行故障排除。