解决MySQL出现unauthenticated user造成系统缓慢的问题
今天刚配的mysql数据库,直接服务器上执行sql很快,但是php环境下就很慢
| Id | User | Host | db | Command | Time | State | Info |
+------+----------------------+-----------------------+----------+---------+------+-------+------------------+
| 7784 | ssdsb | 115.231.104.206:63236 | haidantj | Sleep | 661 | | NULL |
| 8194 | ssdsb | 115.231.104.206:17793 | NULL | Sleep | 3120 | | NULL |
| 8687 | ssdsb | 115.231.104.206:18145 | haidantj | Sleep | 1068 | | NULL |
| 8914 | root | localhost | NULL | Query | 0 | NULL | show processlist |
| 8918 | unauthenticated user | 192.168.1.149:39751 | NULL | Connect | NULL | login | NULL |
+------+----------------------+-----------------------+----------+---------+------+-------+----------------
不管连接是通过hosts还是ip的方式,MySQL都会对DNS做反查,IP到DNS,由于反查的接续速度过慢(不管是不是isp提供的dns服务器的问题或者其他原因),大量的查询就难以应付,线程不够用就使劲增加线程,但是却得不到释放,所以MySQL会“假死”。
解决的方案很简单,结束这个反查的过程,禁止任何解析。
打开mysql的配置文件(my.cnf),在[mysqld]下面增加一行:
skip-name-resolve
重新载入配置文件或者重启MySQL服务即可。