MySQL 没有解析 IP 地址,但 nslookup 确实解析了

MySQL is not resolving IP address, but nslookup does resolve

在工作中,我的团队在 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 table,我可以看到 IP 10.10.xxx.xxx 没有解析为主机(HOST 列是 NULL 并且HOST_VALIDATED 列是 YES).

为什么 MySQL 无法将 IP 地址解析为正确的主机名,而 nslookup 有效? [=38= 中是否有一些设置? ] 我需要修复?我团队的每个工作站都需要在内部 DNS 中有记录吗?

有正向查找,如解析 A 记录,还有 反向查找 ,其中涉及查找 PTR 记录。它们通常在 public 网络上配对在一起,但请记住,一个 或更多 A 记录可以指向相同的 IP,但应该只有一个反向 PTR记录。此外,虽然 PTR 记录应该是一个可解析的地址,但实际情况可能并非如此,反向条目可能无效或解析为完全不同的地址。

除非您有 10.10.in-addr.arpa 的解析器,通常情况下不会出现这种情况,因为这是一个保留地址 space,您无法将 IP 反向查找回主机名。

使用nslookup你可以测试反向映射:

nslookup 10.10.1.1

该地址就是您要反转的地址。

我也遇到过。

原因是 skip_name_resolve 在 my.cnf 配置中打开。它禁用 IP 地址的反向 DNS 查询,并且仅将 IP 地址用于记录时间。

如果 nslookup 有效,则表示反向 DNS 查询有效。

特别是,如果 'resolveip' 命令有效,这意味着 MySQL 服务器能够将 IP 地址解析为主机名。因为resolveip是MySQL服务器自带的命令,所以MySQL用同样的方式解析IP和主机名。