问题
MySQL显示了许多未经验证的用户。
设置
指向5个Web服务器的负载平衡服务器
全部连接到1个数据库/文件服务器。
信息
似乎只有来自服务器1和2的请求存在未经验证的用户问题。服务器3、4和5工作正常,但它们的用户似乎仍在进程列表中。为什么只有两台服务器会出现故障?

+--------+------------------- --+----------------------+----------+-----------+------+---------+------+
| Id     | User                 | Host                 | db       | Command   | Time | State   | Info |
+--------+----------------------+----------------------+----------+-----------+------+---------+------+
| 171733 | unauthenticated user | web.1.IP.HERE:50038  | NULL     | Connect   | NULL | login   | NULL |
| 171735 | unauthenticated user | web.1.IP.HERE:50039  | NULL     | Connect   | NULL | login   | NULL |
| 171736 | unauthenticated user | web.1.IP.HERE:60721  | NULL     | Connect   | NULL | login   | NULL |
| 171737 | unauthenticated user | web.2.IP.HERE:50040  | NULL     | Connect   | NULL | login   | NULL |
| 171746 | unauthenticated user | web.2.IP.HERE:60723  | NULL     | Connect   | NULL | login   | NULL |
| 181337 | username             | web.3.IP.HERE:34426  | dbName   | Sleep     |    4 |         | NULL |
| 181339 | username             | web.3.IP.HERE:51668  | dbName   | Sleep     |    4 |         | NULL |
| 181340 | username             | web.4.IP.HERE:51669  | dbName   | Sleep     |    4 |         | NULL |
+--------+----------------------+----------------------+----------+-----------+------+---------+------+

我看到有人提到过skip-name-resolve,但是当我运行select user, host FROM mysql.user时,我只看到主机列中的IPS或“localhost”,所以我不知道该如何修复它。
总的来说,processlist对于其他用户来说仍然很高,但是在“info”下面它显示为NULL。不管怎样都要清理这些?

最佳答案

好的,这是问题以及如何解决它。。我花了一个月的时间到处找
与“用户”列中“未经身份验证的用户”的连接已启动连接,但尚未发送其凭据,因此服务器不知道究竟是谁在连接。
如果这些连接只有在经过身份验证时才出现在列表中,那么它可能会使服务器耗尽可用的套接字,而您甚至不知道原因。
大多数情况下,连接被阻塞是由于DNS解析不正确,跳过名称解析选项将有助于解决此问题。
更多信息在皮蒂安博客。
在my.cf中使用skip name resolve可以解决您的问题。

关于mysql - MySQL未经身份验证的用户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24659657/

10-14 13:05
查看更多