mysql执行show processlist unauthenticated user 解决方法
一台unibilling机器前几天突然负载变重. 在top中发现cpu被大量占用. agi程序运行的很慢,并出现僵尸进程. 其实当时只有50个左右的并发呼叫. 远远达不到正常水准. 重新启动机器问题也没得到解决. 非常奇怪.
考虑到在top中看到mysqld占用的资源最多,就进入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. 以前创建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连接也没再出现。
http://www.111cn.net/database/mysql/42102.htm
mysql执行show processlist unauthenticated user 解决方法的更多相关文章
- mysql执行update报错1175解决方法
mysql执行update报错 update library set status=true where 1=1 Error Code: 1175. You are using safe update ...
- mysql执行load_fle返回NULL的解决方法
mysql 版本: 5.7.18 问题: 在执行mysql 函数load_file时,该函数将加载指定文件的内容,存储至相应字段.如: SELECT LOAD_FILE("D:\aa.txt ...
- mysql卡顿问题查找和解决方法
mysql卡顿问题查找和解决方法 版权一.所遇问题 写在前边的废话:今天面试阿里的时候问到过类似问题,以前做调优的时候都是现查现用,缺乏总结,面试时答得也不好,今天趁此机会做一个梳理,知 ...
- blocked because of many connection errors; unblock with 'mysqladmin flush-hosts;MySQL在远程访问时非常慢的解决方法;MySql链接慢的解决方法
一:服务器异常:Host 'xx.xxx.xx.xxx' is blocked because of many connection errors; unblock with 'mysqladmin ...
- 浅析Mysql 数据回滚错误的解决方法
介绍一下关于Mysql数据回滚错误的解决方法.需要的朋友可以过来参考下 MYSQL的事务处理主要有两种方法.1.用begin,rollback,commit来实现begin 开始一个事务rollbac ...
- 浅析Mysql数据回滚错误的解决方法
介绍一下关于Mysql数据回滚错误的解决方法.需要的朋友可以过来参考下 MYSQL的事务处理主要有两种方法. 1.用begin,rollback,commit来实现 begin 开始一个事 ...
- mysql导入大批量数据出现MySQL server has gone away的解决方法
因工作需要,需要导入一个200M左右的sql到user库 执行命令 mysql> use user Database changed mysql> source /tmp/user.sql ...
- [转]mysql导入导出数据中文乱码解决方法小结
本文章总结了mysql导入导出数据中文乱码解决方法,出现中文乱码一般情况是导入导入时编码的设置问题,我们只要把编码调整一致即可解决此方法,下面是搜索到的一些方法总结,方便需要的朋友. linux系统中 ...
- 关于php读mysql数据库时出现乱码的解决方法
关于php读mysql数据库时出现乱码的解决方法 php读mysql时,有以下几个地方涉及到了字符集. 1.建立数据库表时指定数据库表的字符集.例如 create table tablename ( ...
随机推荐
- 阿里云短信验证_基于阿里云OpenAPI实现
阿里云短信服务 背景简介: 短信验证以及短信通知,目前已经应用的非常广泛,最近因项目需要,需要将原来的短信接口换成阿里云的的短信服务,原项目集成的短信服务能够实现短信的发送以及短信的验证整个过程,简单 ...
- easyui-datebox 年月视图显示
//年月视图做法 $('#startYearDate').datebox({ onShowPanel: function () { //显示日趋选择对象后再触发弹出月份层的事件,初始化时没有生成月份层 ...
- P2973 [USACO10HOL]赶小猪
跟那个某省省选题(具体忘了)游走差不多... 把边搞到点上然后按套路Gauss即可 貌似有人说卡精度,$eps≤1e-13$,然而我$1e-12$也可以过... 代码: #include<cst ...
- httpd 安装ssl证书
1) 安装ssl模块 # yum install mod_ssl -y Ps:安装完成后,会在/etc/httpd/conf.d/下生成一个ssl.conf配置文件. 2) 先建一个目录用来放ssl证 ...
- [ZJOI2006]GameZ游戏排名系统
Description GameZ为他们最新推出的游戏开通了一个网站.世界各地的玩家都可以将自己的游戏得分上传到网站上.这样就可以看到自己在世界上的排名.得分越高,排名就越靠前.当两个玩家的名次相同时 ...
- javascript学习之Date对象
前几天学习了一下date对象,于是写了一个简单的时间显示放到博客页面里(位于右上角),类似这样的效果,时:分:秒 xxxx年xx月xx日. 下面来说一下具体实现步骤. 首先,既然date是一个对象,那 ...
- Spring Boot (29) 定时任务
使用场景:数据定时增量同步,定时发送邮件,爬虫定时抓取 定时任务概述 定时任务:顾名思义就是在特定/指 定的时间进行工作,比如我们的手机闹钟,他就是一种定时的任务. 实现方式: 1.Timer:JDK ...
- 创建http对象
package test; import java.net.HttpURLConnection;import java.net.URL; import javax.servlet.http.HttpS ...
- poj2502 Subway
思路: 需要注意的地方:一条地铁线路并不一定和样例描述的那样是直的:同一条线路上的两个站点步行可能更快. 实现: #include <iostream> #include <cstd ...
- Android Error:Unable to find method 'com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List;'.
问题:Error:Unable to find method 'com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List ...