从流读取失败 - mysql_native_password错误

时间:2015-05-12 17:28:31

标签: c# mysql sql .net database

我间歇性地遇到了以下错误。

验证主机' 127.0.0.1'对于用户' root'使用方法' mysql_native_password'消息失败:从流中读取失败。

任何时候它都会出现,我的智慧结束了。我还发布了一个关于MySQL漏洞的错误,解决方案并没有证明在任何方面都有效。我希望你们能帮助我。

以下是MySQL Bug的链接,了解详情:Never seems to go away

更多细节:我有一个客户端 - 服务器系统,但是当服务器系统上的本地运行的应用程序试图运行查询时,会在服务器系统(安装MySQL数据库的地方)上发生此错误。

我已经开了一个问题here但是已经死了。只是一个警告我认为skip-name-resolve解决了这个问题,但似乎只是降低了频率。希望有人能帮我解决这个问题。

编辑:MySQL人员说,如果客户端服务器设置服务器很长时间未使用,它可能会关闭连接。但是,这并不是我所面临的问题,因为每次我想执行查询时都会创建一个新连接。我在上一篇关于MySQL Bugs的评论中明确指出了这一点。

6 个答案:

答案 0 :(得分:3)

我经常使用亚马逊的MySQL RDS实例收到此错误。和大多数多AZ实例。

  • 比较笔记以了解其他人是否也会在RDS中遇到这个问题会很有趣吗?
众所周知,亚马逊严重依赖"快速" DNS更改以切换ELB之类的东西。我想知道RDS是否会发生同样的事情?或者其他一些内部AWS交换正在搞乱池中的空闲连接。

这可以解释为什么Oracle开发人员无法重现它并且不会将其视为一个问题。

无论如何,我必须处理它并在打开连接时添加重试逻辑。

答案 1 :(得分:1)

不幸的是,如果应用程序和 mysql 在同一台计算机上,则会出现此错误,如果您将其移动到另一台计算机上,则没问题。

我尝试了很多方法,但目前没有其他解决方案。错误已被其他人多次报告https://bugs.mysql.com/bug.php?id=76597

答案 2 :(得分:0)

伙计们,我尝试这样做:连接字符串中为“ SslMode = None”,但是如果您需要SSL,请阅读以下内容: http://www.voidcn.com/article/p-phfoefri-bpr.html

这是一个有效的示例连接字符串:

connectionString="Server=192.168.10.5;Database=mydata;Uid=root;Pwd=****;SslMode=None" 

希望这会有所帮助

答案 3 :(得分:0)

此问题是由Ssl引起的。

解决方案1:不需要SSL。由于它是由SSL引起的,因此我们可以通过在连接字符串后附加“ SslMode = None”来关闭SSL。

解决方案2:需要SSL,服务器身份很重要,需要进行验证。服务器需要Internet连接才能进行证书验证。请注意,crypto API不会为每个进程更新CTL。 CTL保持在操作系统级别。一旦连接服务器以连接到服务器并建立SSL数据库连接,CTL将自动更新。然后,您可以断开Internet连接。再次注意,CTL有其到期日期,此后Windows需要再次更新它。这可能会在几个月后发生。

解决方案3:需要SSL,但是服务器身份并不重要。通常,在这种情况下,SSL仅用于加密网络传输。我们可以关闭CTL更新:

按Win + R打开“运行”对话框 键入“ gpedit.msc”(不带引号),然后按Enter键 在“本地组策略编辑器”中,依次展开“计算机配置”,“管理模板”,“系统”,“ Internet通讯管理”,然后单击“ Internet通讯设置”。 在详细信息面板中,双击“关闭自动根证书更新”,单击“启用”,然后单击“确定”。此更改将立即生效,而无需重新启动。

http://www.voidcn.com/article/p-phfoefri-bpr.html

答案 4 :(得分:0)

我遇到了错误

  

使用方法'mysql_native_password'对用户'root'的主机'localhost'进行身份验证失败,并显示以下消息:从流中读取

当我在连接字符串中放入SslMode=None时,我就解决了。

但是,我检查了邮件是否与您不同

检查我的连接

connection.ConnectionString = "server=myadressserver;userid=myuser;password=mypassword;database=test;SslMode=None";

答案 5 :(得分:0)

我在Windows窗体应用程序上执行升级时遇到了完全相同的问题。我发现的解决方案是更换服务器,因为那台服务器出现了问题。在呈现您所描述的类似情况的服务器上,已将WordPress安装了MYSQL 5.6.34,在另一台服务器上,我使用MYSQL版本5.6.26进行了全新安装。

我不知道这是否与所使用的环境变量有关。我相信这与连接超时无关,如果它是仅与打开的连接一起使用的属性。在共享环境以及使用Maria DB进行的本地安装中,都会发生此错误。我发现的另一个问题是,检索数据的选择命令之一在格式方面存在问题,不尊重空格:

SELECT COLUNA1, COLUNA2 FROM TABLE;

我将表中的SELECT COLUMN1,COLUMN2进行了更改;

我仍在测试我提出的该解决方案,并且在发布时不再有错误。