解决 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的配置文件增加如下内容:
[mysqld]
skip-name-resolve
重新载入配置文件或者重启MySQL服务即可。
我喜欢,顶一个!
谢谢~~