现象
- 从client连mysql服务器,连不上,连接超时
- 从服务器上看mysql日志信息:
[Warning] IP address ‘172.16.3.12’ could not be resolved: Temporary failure in name resolution
其中的IP是客户端IP
参考
[1] https://serverfault.com/questions/341290/mysql-warning-ip-address-could-not-be-resolved
[2] https://blog.youkuaiyun.com/yabingshi_tech/article/details/51956554
原因
mysqld对IP进行反向域名解析,不能解析导致的错误
三种解决方法
- 把DNS去掉:注释掉/etc/resolv.conf的内容. 没有设置DNS服务器,mysqld就不去远程做DNS解析了
方法1的局限:需要DNS解析的其他应用没法工作了
- 把client的ip和主机名写在mysql服务器的/etc/hosts文件里,mysqld可以很快解析到主机名。
如:
172.16.3.12 xxx.com
方法2的局限:不适于客户端多或IP经常变化时
- 通过mysqld的配置文件,禁止mysqd进行域名解析:
下列内容写在 /etc/my.conf.d/server.cnf 中 (CentOS)
[mysqld]
skip-host-cache
skip-name-resolve
方法3的局限:不能在mysql授权时中指定主机名了,只能指定IP