使用旧(4.1.1之前)身份验证协议拒绝连接(启用客户端选项'secure_auth')

tlu*_*lum 14 odbc mysql-error-1064

尝试使用Windows OBDC驱动程序连接到MySQL数据库时遇到问题.有很多关于明显的搜索命中...人们正在使用旧版本,但是,我不是.

mysqld在CentOS 6.4 32bit上

./usr/libexec/mysqld  Ver 5.1.69 for redhat-linux-gnu on i386 (Source distribution)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

因此,我无法理解4.1.1协议的来源.有任何想法吗?

tlu*_*lum 10

我想如果你问正确的问题就更容易找到答案.

在这种情况下,"我的"问题涉及密码如何被散列并存储在数据库中.旧版密码使用较短的哈希存储,现在已弃用.

一些要点:

mysql_upgrade不能也不会升级密码,也不会在某些版本中警告它,请参阅:http://bugs.mysql.com/bug.php?id = 65461 .

即使您拥有大多数最新的服务器和客户端,只需要一个遗留客户端来创建旧密码,然后无论客户尝试使用该帐户,您都会遇到该帐户的问题.

不同的版本以不同的方式处理这种情况,因此您可以坐在数据库中的一些旧密码上,然后突然,由于没有明显的原因,一些帐户停止工作...这是因为不同的版本选择处理这种情况.

您无法升级密码.你必须知道它们是什么,你必须改变它们.

编辑:为了更清楚,您必须使用使用较长哈希的新客户端更改使用较短哈希存储的密码.通过这样做,您将使用更长的哈希编写该帐户密码,此时不应该标记尝试访问该帐户的任何操作.如果问题是经常出现的,那么您应该在您的站点上查找仍在使用已弃用的哈希长度编写密码的旧客户端.


小智 9

在"管理服务器连接","连接"选项卡,"高级"子选项卡中的MySQL Workbench 6.08中,必须选中" 使用旧的身份验证协议 " 框.