mysql auth fail_MySQL Authentication Failed问题分析与解决对策

本文详细分析了遇到的MySQL Authentication Failed问题,问题出现在使用MySQL Connector/NET时,由于获取操作系统信息的WMI查询超时,导致数据库连接被数据库服务器中断。通过时间埋点定位到问题代码,验证了WMI查询的延迟是故障根源。解决方案是缓存操作系统信息,避免每次连接时进行WMI查询,从而消除超时错误。
摘要由CSDN通过智能技术生成

问题描述

在应用端,偶尔看到有如下报错:Authentication to host 'xxxx' for user 'yyyy' using method 'mysql_native_password' failed with message: Reading from the stream has failed.

表现特征:

只有用Connector/NET 出现这个问题, 用JDBC驱动没有类似问题。

多台应用服务器,只有一台报这个错。因此可以排除服务器端的问题。

问题非常随机。重启一下服务器/IIS,就能临时解决问题。

有一些场景应用服务器CPU并不是很高,也会偶尔抛出这个错来。

客户端是Windows机器, 驱动是MySQL Connector  ADO.NET Driver for MySQL (Connector/NET) ,使用的版本是6.9.9是比较新的版本。

问题分析

我们在应用服务器端和数据库端抓包。两边抓到的包是一致的。可以排除网络包丢失问题。下面是抓到的包,以及时间点:

11f4fbb450cf52fc4b3814a08b16f962.png

从上述网络包的交互来看, 前面三个包是TCP的三次握手协议。问题出在第六个包,数据库服务器向应用服务器发送了一个Finish包,来终止数据库的连接。数据库发送Finish包,是由于数据库端发现连接超时而发送的。 这是由服务器端的Connect_timeout这个变量来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值