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


36

我已经安装了MySQL Master / Slave,并且在两台服务器的mysql日志文件中都注意到了以下警告:

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

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

我计划限制对防火墙3306端口的访问,但是请您帮助我了解他们正在尝试执行的操作。他们只是试图连接到MySQL服务器。在哪里可以找到更多详细信息。

谢谢

Answers:


48

创建MySQL用户时,username@example.comMySQL必须对连接到它的每个IP地址进行反向查找,以确定它们是否属于example.com

当然,创建反向查询没有任何限制,因此我可以很高兴地要求提供者为我的IP地址设置反向查询,以便于google.com……或者example.com如果我碰巧知道这就是数据库中用户所拥有的。这不会让我进去,因为MySQL然后对返回的域进行正向查找,以确保它与所连接的IP地址匹配。

你可以关掉这个功能skip_name_resolve在你的my.cnf这样做有很多充分的理由

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

您也有来自中国的恶意攻击者,他们试图将自己的方式强行插入数据库。那应该是您的首要任务。


1
本地可以有什么问题吗?
马来M

我认为这里没有安全漏洞,因为如果对某个IP地址的反向查询解析为localhost,MySQL仍将继续进行正向查询localhost以确保其与原始IP地址匹配。但是,与所有与安全相关的事情一样,不要仅仅相信我。而且最好在配置中关闭名称解析。
拉达达达(Ladadadada)

13

我认为直接在Internet上公开数据库服务器是一个非常糟糕的主意。

如果要复制到远程主机并需要Internet访问以实现此目的,建议您在两个网络之间设置VPN,并将MySQL服务器绑定为仅侦听本地网络。

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


1

刚刚在Amazon RDS上也被这一问题所吸引。我只想连接到我的测试数据库实例(绝对不建议在生产数据库中执行以下操作):

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

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

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


0

远程连接到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时会在本地应用程序中导致一些错误。


一年多以前,但是您必须重新启动mysql吗?这对我不起作用。
Ejoso

您不会,因为hosts文件是在客户端而非mysql服务器上管理的。
leeman24
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.