MySQL出现大量unauthenticated user

MySQL出现大量unauthenticated user

问题状态

重启mysql也尽是失败,看mysql的errorlog,只能看到类似如下的信息:

Forcing close of thread 12232 user: 'root'

用mysqladmin 简单的监控了下mysql的情况:

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

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

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

2007 | unauthenticated user | 192.168.4.29:58519 | | Connect | | login | |

2008 | unauthenticated user | 192.168.4.29:58553 | | Connect | | login | |

2009 | unauthenticated user | 192.168.4.29:58571 | | Connect | | login | |

2010 | unauthenticated user | 192.168.4.29:58577 | | Connect | | login | |

2011 | unauthenticated user | 192.168.4.29:58579 | | Connect | | login | |

2012 | unauthenticated user | 192.168.4.29:58589 | | Connect | | login | |

原因分析

MySQL会尝试去反查IP->DNS,由于反查解析过慢,无法应付快速多量的查询。

解决办法

解决方式很简单:启动MySQL的时候,添加--skip-name-resolve选项

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