今天公司的服务器linux因换了个路由器换了网段,从20.62换到23.62,结果,发现在与数据库建立连接的时候很慢,基本上需要30秒钟左右,其它建立连接后数据库的操作基本正常,就与数据库建立连接比较慢,后来查了半天,排除了是网络的问题。在网上查了一下,发现了mysql有一个“反向解析”的问题:
安装mysql后,默认反向解析是打开的。不管你是使用域名还是IP连接数据库,mysqld都会做一个反向解析的过程,即从 IP->dns的反查,反查的过程是很慢的而且是受ISP控制,所以一旦ISP由于某些原因(这个也许有必要让系统工程师查查)而无法响应就会出现前面所说的unauthenticated user,而且mysql会出现停顿状态。解决的办法就是在my.cnf里面增加一个设置禁止mysql做任何解析的动作。
skip-name-resolve在做这个设置的之前一定要检查系统,将所有连接改写为IP连接,因为一旦此设置生效,mysql是无法进行域名解析的,原有的域名连接将全部失效。
可查看/etc/hosts文件里的情况,
修改此文件前如下:
[root@yysoftser036 home]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.20.61 yybiginsight061
192.168.20.62 yyserver0472012
192.168.20.63 yysoftser036
192.168.20.72 Yybiginsight052
#::1 localhost6.localdomain6 localhost6
[root@yysoftser036 home]#
修改后如下:
[root@yysoftser036 home]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.23.61 yybiginsight061
192.168.23.62 yyserver0472012
192.168.23.63 yysoftser036
192.168.23.72 Yybiginsight052
#::1 localhost6.localdomain6 localhost6
[root@yysoftser036 home]#
当然,开始时修改了上述hosts文件后并不能解决问题,关键的是需要在数据库配置文件/etc/my.cnf中添加一条语句 skip-name-resolve
修改完重启数据库(用命令service mysqld restart)后,便连接正常了。
网上相关参考资料连接:
http://blog.sina.com.cn/s/blog_605f5b4f0101847z.html
http://www.haogongju.net/art/2011953