在工作中,我的团队在Linux 14.04机器上拥有一个MySQL数据库。我的团队正在努力更改使用主机名而不是IP的权限(以便IT团队可以对网络进行他们想要的操作,而不必担心破坏我们的访问权限。)
例如,将有一个用户admin@10.10.xxx.xxx
,我们想要更改为admin@my-ws.co.local
。我一直在和我的用户玩耍(因为我已经具有root身份并且仍然可以登录)。将用户配置文件的主机从IP地址更改为主机名后,Workbench将给出错误信息...
HOST '10.10.xxx.xxx' is not allowed to connect to this MySQL server
当我登录到Linux机器并使用nslookup my-ws.co.local
时,响应将为我提供正确的IP地址,因此我知道机器与网络之间没有连接问题。而且由于响应是正确的,因此我假设内部DNS正常工作。
检查performance_schema.host_cache
表,可以看到IP 10.10.xxx.xxx
未解析为主机(HOST
列为NULL
,而HOST_VALIDATED
列为YES
。
在nslookup
正常工作的情况下,为什么MySQL无法将IP地址解析为正确的主机名??MySQL中是否有一些我需要修复的设置?我团队中每个工作站的内部DNS中是否都需要记录?
答案 0 :(得分:0)
有正向查找,例如解析A
记录,还有反向查找,其中涉及查找PTR
记录。它们通常在公共网络上配对在一起,但是请记住,一个或更多 A记录可以指向同一IP,但是应该只有一个反向PTR
记录。此外,虽然PTR
记录应该是可解析的地址,但事实并非如此,反向条目可能无效或解析为完全不同的地址。
除非您有一个10.10.in-addr.arpa
的解析器(通常情况并非如此,因为这是保留的地址空间),否则您无法将IP反向查找回主机名。
使用nslookup
,您可以测试反向映射:
nslookup 10.10.1.1
该地址就是您要撤消的地址。
答案 1 :(得分:0)
它也发生在我身上。
原因是在 my.cnf 配置中开启了 skip_name_resolve。禁用反向DNS查询形式的IP地址,只使用IP地址记录时间。
如果 nslookup 有效,则表示反向 DNS 查询有效。
特别是,如果 'resolveip' 命令有效,则意味着 MySQL 服务器能够将 IP 地址解析为主机名。因为resolveip是MySQL Server自带的命令,MySQL使用相同的方式解析IP和主机名。