解决MySQL出现UnauthenticatedUser的问题

发现MySQL在上午的时候忽然发飙,不断的挂掉。看MySQL的error.log,只能看到类似如下的信息:
Forcing close of thread 12232 user: ‘root’

mysqladmin -uroot -p******** status -i 1

使用上述命令,发现Queries per second avg只有200左右,可以说很低,但是Threads确非常不稳定,居然会瞬间升至200以上,一般情况下这个线程这个值都是不会高于5的个位数。

mysqladmin -uroot -p******** processlist

使用上述命令,发现居然有大量的unauthenticated user进程。Google了一下,发现这算MySQL的一个BUG,不管连接是通过hosts还是ip的方式,MySQL都会对DNS做反查,IP到DNS,由于反查的接续速度过慢,大量的查询就难以应付,线程不够用就使劲增加线程,但是却得不到释放,所以MySQL会“假死”。

解决方案,结束这个反查的过程,禁止任何解析,打开mysql的配置文件(my.cnf),在[mysqld]下面增加一行:

skip-name-resolve

重新载入配置文件或者重启MySQL服务即可。

“解决MySQL出现UnauthenticatedUser的问题”的2个回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注