Answers:
创建MySQL用户时,username@example.com
MySQL必须对连接到它的每个IP地址进行反向查找,以确定它们是否属于example.com
。
当然,创建反向查询没有任何限制,因此我可以很高兴地要求提供者为我的IP地址设置反向查询,以便于google.com
……或者example.com
如果我碰巧知道这就是数据库中用户所拥有的。这不会让我进去,因为MySQL然后对返回的域进行正向查找,以确保它与所连接的IP地址匹配。
你可以关掉这个功能skip_name_resolve
在你的my.cnf
。 这样做有很多充分的理由。
出现此错误的原因是,所讨论的IP地址根本没有反向查找。
您也有来自中国的恶意攻击者,他们试图将自己的方式强行插入数据库。那应该是您的首要任务。
localhost
,MySQL仍将继续进行正向查询localhost
以确保其与原始IP地址匹配。但是,与所有与安全相关的事情一样,不要仅仅相信我。而且最好在配置中关闭名称解析。
刚刚在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
解决问题结束后,请不要忘记从数据库分离策略。
远程连接到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时会在本地应用程序中导致一些错误。