IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 【不积跬步无以至千里】MySQL报大量unauthenticated user连接错误 -> 正文阅读

[大数据]【不积跬步无以至千里】MySQL报大量unauthenticated user连接错误

【不积跬步无以至千里】MySQL报大量unauthenticated user连接错误

问题背景

应用报MySQL数据库无法连接,经排查发现是连接数满了。通过max_connections参数将连接数上限调大到1000后,数据库开始大量报unauthenticated user错误。

: 343942 : unauthenticated user : 192.168.0.4:49607 : : Connect : : login :
: 343943 : unauthenticated user : 192.168.0.4:49608 : : Connect : : login :
...
...

问题分析

在网上查了一下,可能是由于数据库未配置skip-name-resolve参数,MySQL在验证应用连接时会解析主机名,如果连接太多且没有及时释放,就会导致MySQL“假死”,从而出现上面的情况。

MySQL官方对skip-name-resolve参数的描述如下:

Whether to resolve host names when checking client connections. If this variable is OFF, mysqld resolves host names when checking client connections. If it is ON, mysqld uses only IP numbers; in this case, all Host column values in the grant tables must be IP addresses.

即,关闭该参数时,MySQL在检查客户端连接时会解析主机名;开启该参数时,MySQL只会检查IP。

检查了一下出问题的MySQL数据库的配置文件,里面确实没有skip-name-resolve这一行。也可以执行下面的语句查询,看看值是不是OFF:

show variables like 'skip_name_resolve';

MySQL官方对于应用连接数据库时DNS解析过程的描述如下:

For each applicable new client connection, the server uses the client IP address to check whether the client host name is in the host cache. If so, the server refuses or continues to process the connection request depending on whether or not the host is blocked. If the host is not in the cache, the server attempts to resolve the host name. First, it resolves the IP address to a host name and resolves that host name back to an IP address. Then it compares the result to the original IP address to ensure that they are the same. The server stores information about the result of this operation in the host cache. If the cache is full, the least recently used entry is discarded.

即,数据库在验证新的应用连接时,会先将IP地址解析为主机名,再将主机名解析为IP,并和原始IP进行比对。如果DNS服务器出现问题,也有可能报unauthenticated user的错误。

问题处理

方法一
在MySQL配置文件中加上下面这一行,然后重启数据库。

skip-name-resolve

好处是能从根本上解决问题;缺点是以后给用户授权时host只能使用IP地址,不能使用主机名。

方法二
手动为每个应用连接配置hosts解析。比如Linux操作系统中,可以在/etc/hosts文件中添加对应的host记录。缺点是不适用于应用连接特别多的情况。

192.168.32.33  appserver01
192.168.32.34  appserver02

References
【1】https://dev.mysql.com/doc/refman/5.7/en/host-cache.html
【2】https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 11:37:32  更:2022-02-26 11:40:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:00:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码