• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysql执行show processlist unauthenticated user 解决方法

mysql 搞代码 4年前 (2022-01-09) 22次浏览 已收录 0个评论

今天在一台服务器上出现了show processlist unauthenticated user错误提示下面我们来看看解决方法。

一台unibilling机器前几天突然负载变重. 在top中发现cpu被大量占用. agi程序运行的很慢,并出现僵尸进程. 其实当时只有50个左右的并发呼叫. 远远达不到正常水准. 重新启动机器问题也没得到解决. 非常奇怪.

考虑到在top中看到d占用的资源最多,就进入mysql控制台,运行 show processlist命令, 发现某进程的信息很特殊:

代码如下复制代码
User “unauthenticated user”
Command “connect”

State “reading from net”难道是黑客从internet上攻击我的机器? 显然不是, 因为Host那一列显示的是”localhost”.

没办法. 在google上一查找,竟发现若干人遇到过该问题. 也不能算是mysql的bug,因为通过更改配置文件 /etc/my.cnf即可解决.

具体地讲,在mysqld那一栏中添加 skip-name-resolve

[mysqld]

代码如下复制代码

skip-name-resolve

注意, skip-name-resolve可以禁用dns解析,但是,这样不能在mysql的授权表中使用主机名了,只能使用IP. 以本文来源gaodai#ma#com搞@代~码^网+前创建mysql用户是若用的是localhost现在则需要用127.0.0.1来代替在grant语句中执行一下添加该用户.

然后, 重新启动mysqld.

网上找到的另一些说法

发现这属于官方一个系统上的特殊设定,亦可称呼他为MySQL的bug,不管连结的的方式是经过hosts或是IP的模式,他都会对DNS做反查。MySQL会尝试去反查IP->DNS,由于反查解析过慢,无法应付快速多量的查询。

解决方式很简单:启动MySQL的时候,添加–skip-name-resolve选项,禁止域名解析,问题解决

代码如下复制代码

mysql >show full processlist;

发现大量 unauthenticated user 连接信息

13012 unauthenticated user x.x.x.x:2501 None Connect Reading from net

10056 unauthenticated user x.x.x.x:2805 None Connect Reading from net

10311 unauthenticated user x.x.x.x:2306 None Connect writing to net

10326 unauthenticated user x.x.x.x:2715 None Connect login

10422 unauthenticated user x.x.x.x:2811 None Connect login

查阅网上资料,主要介绍解决方法如下:
1. 在 /etc/my.cnf 通过添加 skip-name-resolve 参数,关闭mysql的dns反查询,mysql使用IP授权

2. 在 /etc/hosts 添加IP与主机名对应关系 ,检查 /etc/resovle主DNS服务.

3. 调整mysql max_connections,max_allowed_packet ,wait_timeout,interactive_timeout 参数

经确认其实上面配置大部分参数生产环境都是已经配置过,出现大量unauthenticated user 信息时表明mysql没有给这些客户端连接请求确认凭证,也就是说mysql无法确认这些连接使用的账号信息,在wait_timeout之内mysql一直等待这些连接完成, 通过测试 telnet x.x.x.x 3306 观察,在mysql数据库也会出现一条 unauthenticated user x.x.x.x:4706 None Connect Reading from net 连接, 因此这种现象不一定就是数据库问题 ,下面这些都有可能产生这种现象

1.如果应用安全问题出现大量数据库探测,出现大量这种未经授权的连接

2.应用服务压力过大出现线程异常中断导致出现大量异常数据库连接

3.应用服务异常,导致出现大量异常数据库连接

4. MySQL 客户端连接版本问题,验证协议不兼容,尤其注意old-password验证方式

最后通过投票系统加入验证码防止刷票,减少出现非法和异常连接可能性,重启PHP服务后CPU负载恢复正常,mysql数据库unauthenticated user连接也没再出现。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysql执行show processlist unauthenticated user 解决方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址