解决 MySQL 出现 UnauthenticatedUser 的问题

warning: 这篇文章距离上次修改已过224天,其中的内容可能已经有所变动。

发现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服务即可。

最后修改于:2022年04月24日 15:55

已有 2 条评论

  1. 我喜欢,顶一个!

添加新评论