MYSQL服务器出现大量unauthenticated user

      某天,我的网站速度变的很慢很卡,查看服务器的内存,使用率不高;查看网络连接,ok;重启apache&mysql,依旧很卡。

      我怀疑是mysql出现了问题,于是运行“SHOW PROCESSLIST”命令查看mysql的进程,发现有大量“unauthenticated user”,看下手册中的解释是:unauthenticated user refers to a thread that has become associated with a client connection but for which authentication of the client user has not yet been done。意即:有一个线程在处理客户端的连接,但是该客户端还没通过用户验证。

      经过查证,不管连结的的方式是经过 hosts 或是 IP 的模式,他都会对 DNS 做反查。mysqld 会尝试去反查 IP -> dns ,由于反查解析过慢,无法应付快速多量的查询。也就是说服务器在做DNS反响解析,解决办法有两个:
1、在 hosts 中添加客户端ip,如 192.168.0.1  yejr

这种方法显然不适用于提供互联网服务的服务器


2、MySQL启动参数增加一个 --skip-name-resolve,即不启用DNS反响解析

     a. 首先进入mysql的bin目录,执行killall mysqld,关闭mysql

     b. 执行启动命令:./mysqld_safe --user=mysql --skip-name-resolve &

 

 

你可能感兴趣的:(thread,mysql,互联网,服务器,user,Authentication)