【问题标题】:MySQL is not resolving IP address, but nslookup does resolve [closed]MySQL 没有解析 IP 地址,但 nslookup 确实解析了 [关闭]
【发布时间】:2024-05-22 05:15:01
【问题描述】:

在工作中,我的团队在 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 列是NULLHOST_VALIDATED 列是YES)。

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

【问题讨论】:

标签: mysql linux dns mysql-workbench nslookup


【解决方案1】:

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

除非您有10.10.in-addr.arpa 的解析器(通常情况下不是这种情况,因为这是保留的地址空间),否则您无法将 IP 反向查找回主机名。

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

nslookup 10.10.1.1

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

【讨论】:

  • 啊,这是缺失链接的一部分。谢谢!看起来我们的网络目前没有设置为对工作站进行反向查找。我正在与我的 IT 团队协商,我们会弄清楚的。
  • PTR 记录不需要是唯一的,虽然很少见,但它可能会发生(大多数处理 PTR 记录的应用程序不知道如何处理)
  • 在私有网络上可靠地进行反向查找的唯一方法是每个人都使用具有正确配置的相同私有名称服务器。显然,公共服务器不会了解您的私有网络的内部结构。
【解决方案2】:

这也发生在我身上。

原因是在my.cnf配置中开启了skip_name_resolve。它禁用反向 DNS 查询形式的 IP 地址,并仅使用 IP 地址记录时间。

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

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

【讨论】: