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和主机名。
在工作中,我的团队在 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和主机名。