我在一个大的坏网络中有一个服务器,我想在我的家庭系统上运行一个mysql客户端连接到它。出于明显的安全原因,我希望MySql服务器只允许我的IP地址连接。我有一个dyndns.org帐户,可以跟踪我当前的IP地址。康卡斯特当然可以随时更改我的IP地址。
所以我创建了一个这样的用户:
CREATE USER 'user'@'mememe.dyndns.org' IDENTIFIED BY 'changeme';
GRANT ALL PRIVILEGES ON mydata TO 'user'@'mememe.dyndns.org';
因此,当我尝试从家庭系统连接到此服务器时,我得到:
ERROR 1130 (HY000): Host 'c-98-234-122-18.hsd1.ca.comcast.net' is not allowed to connect to this MySQL server
当然,MySQL看到的主机名是RDNS查找IP地址的内容。我想要的是让它识别dyndns.org名称。有没有办法做到这一点?
如果没有办法做到这一点,这是否意味着我被迫创建带有通配符或特定IP地址的用户名?
答案 0 :(得分:4)
您想要达到的目标是绝对不可能的,请考虑事件流程
MySQL绝不会查找'mememe.dyndns.org'。
答案 1 :(得分:3)
问题是comcast主机名是该IP的规范反向查找名称,而不是您的DynDNS名称。你想做的事情在MySQL中根本不可能。
但是,如果你有自己的服务器,那么从另一个角度处理这个问题怎么样 - 允许来自mySQL中任何IP的连接,但是使用服务器的防火墙进行基于IP的过滤?一个成熟的防火墙产品可能有更多的可能性来解决这个问题。
This blog post显示了一种从动态DNS主机更新iptables记录的方法。也许这是一个开始。否则,搜索查询,例如" Linux Firewall Dyndns"或" iptables dyndns"可能会提出解决方案。
关于此问题,可能还值得就Serverfault单独提问。