MySQL Warning IP address could not be resolved

警告与解决方式

今天在服务器上看了下 MySQL 的错误日志,发现有大量的警告信息 [Warning] [MY-010055] [Server] IP address 'xxx.xxx.xxx.xxx' could not be resolved: Name or service not known,经过查找,了解到是 DNS 反解析错误。

因为 MySQL 数据库服务器没有配置 /etc/hosts,也没有 DNS 服务,导致了 mysqld 反向解析 IP 对应的域名失败。

解决方式可以通过添加 skip_name_resolve 配置到 /etc/my.cnf 中来跳过 DNS 反解析。
不过需要了解的是,这种解决方式会使得 MySQL 中的 mysql.user 用户表里的 HOST 列不能使用域名,只能使用 localhost 或者 IP 地址,否则无法登录。

所以在这么做之前,最好做个检查。

1
SELECT user,host FROM mysql.user WHERE host <> 'localhost' AND host RLIKE '[a-z]';

确认没有问题之后,打开 /etc/my.cnf 文件

1
2
3
4
[mysqld]
# ...
skip_name_resolve=1
skip_host_cache

然后重启 mysqld 服务 service mysqld restart 即可。

参考链接

  • https://www.cnblogs.com/digdeep/p/4906423.html
  • https://serverfault.com/questions/393862/mysql-warning-ip-address-could-not-be-resolved
  • https://www.percona.com/blog/2008/05/31/dns-achilles-heel-mysql-installation/