作家
登录

MySQL Authentication Failed的问题分析与解决对策

作者: 来源: 2017-12-04 12:06:44 阅读 我要评论

问题验证

我们如今具体分析,为何客户端发送账号,驱动版本,操作体系信息到数据库端这么慢。这部分的代码在Connector/NET的MySQLAuthenticationPlugin.cs文件中。 我们修改┞封部分代码,进行时光埋点,来进一步定位问题。下面是根据时光埋点,打印出来的跟踪信息。

CTO练习营 | 12月3-5日,深圳,是时刻成为优良的技巧治理者了


问题描述

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

表示特点:

  1. 只有效Connector/NET 出现这个问题, 用JDBC驱动没有类似问题。
  2. 多台应用办事器,只有一台报这个错。是以可以清除办事器端的问题。
  3. 问题异常随机。重启一下办事器/IIS,就能临时解决问题。
  4. 有一些场景应用办事器CPU并不是很高,也会有时抛出这个错来。

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

问题分析

我们在应用办事器端和数据库端抓包。两边抓到的包是一致的。可以清除收集包损掉问题。下面是抓到的包,以及时光点:

大年夜上述收集包的交互来看, 前面庞个包是TCP的三次握手协定。问题出在第六个包,数据库办事器向应用办事器发送了一个Finish包,来终止数据库的连接。数据库发送Finish包,是因为数据库端发明连接超时而发送的。 这是由办事器端的Connect_timeout这个变量来控制。原因在于应用端跨越10秒未向数据库办事器端发送收集包。大年夜收集包交互的情况来看,第五个包和第六个包的时光距离刚好是10秒。

比较正常的数据库连接和膳绫擎异常的数据库连接。 应用办事器发送第5个包到数据库端后, 应当紧接着发送下面的收集包到数据库端的。这个包主如果发送账号,驱动版本,操作体系信息比及数据库办事器端。【下面是部分的┞俘常的收集包截图】。在出现异常报错的场景,客户端是延迟发送这个包的。在Frame 8才发送的。而此时连接已经被Finish了,在Frame 9,数据库端发送了一个Reset包到应用办事器,彻底中断连接。

大年夜跟踪的Trace来看,有30秒阁下的操作延时,全部时光集中在获取Mysqldefs:: OSDetails的属性。这部分代码如下:

这段代码是经由过程WMI萌芽,来获得Caption信息。也就是操作体系的版本信息。因为是WMI调用,所以依附的关系比较多且与操作体系的状况相干。

为了验证是否为WMI偶发且频繁的延时导致临盆情况的某些机械出现通信异常,我们把这段代码抽出来。下面是一段简短的重现代码:

在有问题的应用办事器上,我们运行上述代码,确切可以发明WMI萌芽有超时。下面这些日记信息是我们抓到的萌芽跨越30秒的WMI信息萌芽操作。由此完全确认是该操作导致MySQL authentication failed缺点。

  1. 2017-11-21 17:19:30.208,       33638 
  2.  
  3. 2017-11-21 17:20:09.193,       33199 
  4.  
  5. 2017-11-21 17:20:53.086,       33201 
  6.  
  7. 2017-11-21 17:27:05.114,       32976 
  8.  
  9. 2017-11-21 17:28:19.178,       33635 
  10.  
  11. 2017-11-21 17:30:07.130,       65977 
  12.  
  13. 2017-11-21 17:30:49.051,       40478 
  14.  
  15. 2017-11-21 17:31:15.126,       26072 
  16.  
  17. 2017-11-21 17:38:16.048,       66671 
  18.  
  19. 2017-11-21 17:38:49.204,       33152 
  20.  
  21. 2017-11-21 17:39:53.161,       33828 

  22.   推荐阅读

      VMware与AWS携手扩展VMware Cloud on AWS的功能性与可用性

    CTO练习营 | 12月3-5日,深圳,是时刻成为优良的技巧治理者了 【51CTO.com原创稿件】在本次AWS re: Invent 2017大年夜会上,VMware与AWS两边合营颁布VMware Cloud™ border="0" alt>>>详细阅读


    本文标题:MySQL Authentication Failed的问题分析与解决对策

    地址:http://www.17bianji.com/lsqh/39417.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)