MySQL 警告“无法解析 IP 地址”

MySQL 警告“无法解析 IP 地址”

我已经设置了 MySQL Master/Slave,并且我注意到两个服务器上的 mysql 日志文件中都有以下警告:

[Warning] IP address 'xxx.xxx.xxx.xxx' could not be resolved: Name or service not known

我已经检查过,DNS 查找工作正常,并且大多数 IP 来自中国。

我计划限制防火墙上 3306 端口的访问,但您能否帮助我了解他们想做什么?他们只是试图连接到 MySQL 服务器吗?我可以在哪里查找更多详细信息。

谢谢

答案1

当您创建 MySQL 用户时,[email protected]MySQL 必须对连接到它的每个 IP 地址进行反向查找,以确定它们是否属于其中的一部分example.com

当然,创建反向查找没有任何限制,因此,google.com如果我愿意,或者example.com我恰好知道您的数据库中的用户拥有反向查找,我可以非常高兴地要求提供商为我的 IP 地址设置反向查找。这不会让我进入,因为 MySQL 随后会对返回的域进行正向查找,以确保它与连接的 IP 地址相同。

skip_name_resolve您可以在您的 中关闭此功能my.cnf这样做有很多好的理由

出现此错误的原因是,所讨论的 IP 地址根本没有反向查找。

还有一些来自中国的恶意攻击者试图强行入侵您的数据库。这应该是您的首要任务。

答案2

我认为将数据库服务器直接暴露在互联网上是一个非常糟糕的想法。

如果您要复制到远程主机并且需要互联网访问才能实现这一点,我建议您在两个网络之间设置一个 VPN,并绑定您的 MySQL 服务器以仅监听本地网络。

如果您的两个主机都在同一个本地网络上,那么您可以安全地将您的 mysql 服务器绑定到该网络。

答案3

刚刚在 Amazon RDS 上也遇到了这个问题。我只想连接到我的测试数据库实例(以下肯定是不建议对于生产数据库):

Amazon RDS 中的安全组与 EC2 实例的常规防火墙规则略有不同。如果您为特定 IP 打开 MySQL 端口,则您的 MySQL 服务器必须识别该 IP。否则,连接将被拒绝。临时解决方案是创建新的安全组,即anyone_can_connect_to_mysql仅包含一个项目 - 允许来自互联网任何地方的入站连接 MySQL/Aurora,并将此安全组附加到您的数据库。

Inbound
-----------------------------------------
| MYSQL/Aurora | TCP | 3306 | 0.0.0.0/0 |
-----------------------------------------

这将从客户端连接中删除 IP 检查,因此您可以自由连接。anyone_can_connect_to_mysql解析问题解决后,请不要忘记从数据库中分离策略。

答案4

远程连接到 Mysql 时,出现错误。我在以下位置收到此警告/var/log/mysqld.log

[Warning] IP address 'X.X.X.X' could not be resolved: Temporary failure in name resolution

我刚刚将这一行添加到/etc/hosts文件中:

X.X.X.X some_name

问题解决了!如果不使用skip-name-resolve,当连接到 mysql 时,它会导致我的本地应用程序出现一些错误。

相关内容