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

标签 mysql linux dns mysql-workbench nslookup

<分区>

在工作中,我的团队在 Linux 14.04 机器上有一个 MySQL 数据库。我的团队正在努力更改使用主机名而不是 IP 的权限(这样 IT 团队就可以对网络做他们想做的事,而不用担心会破坏我们的访问权限)。

例如,有一个用户 admin@10.10.xxx.xxx,我们希望将其更改为 admin@my-ws.co.local。我一直在玩我的用户(因为我有 root 并且仍然可以登录)。将用户配置文件的主机从 IP 地址更改为主机名后,Workbench 将给出错误...

HOST '10.10.xxx.xxx' 不允许连接到此 MySQL 服务器

当我登录到 Linux box 并使用 nslookup my-ws.co.local 时,响应给了我正确的 IP 地址,所以我知道 box 和网络。由于响应是正确的,我假设内部 DNS 工作正常。

检查 performance_schema.host_cache 表,我可以看到 IP 10.10.xxx.xxx 没有解析为主机(HOST 列为 NULLHOST_VALIDATED 列为 YES)。

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

最佳答案

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

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

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

nslookup 10.10.1.1

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

关于MySQL 没有解析 IP 地址,但 nslookup 确实解析了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51216230/

相关文章:

mysql - 单个 sql 查询来执行一些分组依据

c++ - 如何调试奇怪的内存泄漏 (C++)

c++ - 如何使用 recv() 在 C++ 套接字中接收超过 65000 个字节

amazon-web-services - Docker 容器/AWS EC2 公共(public) DNS 拒绝连接

html - 在 Linux 服务器上使用 DNS

.htaccess RewriteRule subsubdomain.subdomain.domain.tld 到 subdomain.domain.tld/subsubdomain

php - 检查用户名是否可用于庞大数据集的最快方法是什么?

mysql - 许多复选框有很多列还是单列位串更好

C++编译但在执行时出错

mysql - IF 语句按 Doctrine 2 查询 Symfony 2 的子句排序