不支持认证方法'mysql_old_password'

5

已将MySQL Connector.Net更新到版本6.6.4提供程序,以与Visual Studio 2012集成,但现在当我尝试配置连接到EDMX时会出现错误“不支持身份验证方法'mysql_old_password'”。


请在问题中提出一个真正的问题。到目前为止,这只是一个陈述。 - Damien Overeem
我的问题是如何使用edmx连接器6.6.4和Visual Studio 2012连接到mysql,因为我无法做到这一点。 - Cristiano Nascimento
@CristianoNascimento,我有同样的问题。你解决了吗? - Aki
3个回答

9
当你连接到一个MySQL数据库时,如果它的密码是以旧密码格式存储的(http://dev.mysql.com/doc/refman/5.0/en/old-client.html),则会显示此错误消息。新版MySQL客户端不允许连接到使用旧密码格式的数据库,因为它不够安全。
有人建议在MySQL服务器上设置old_passwords=1,但我认为最好将密码升级到新的密码格式。然后可以重新设置MySQL连接,并更好地保护您的数据库。
您可以在这里阅读有关如何将MySQL密码从旧格式升级到新格式的信息:http://code.openark.org/blog/mysql/upgrading-passwords-from-old_passwords-to-new-passwords

2

截至MysqL Connector/NET 6.6.2版本,它不再支持旧密码样式的认证(由于不安全且有文档记录的攻击方式),请注意更新。

如果您尝试使用旧密码样式账户,则会出现算术溢出错误(当然,更友好的错误提示会更好)。

如此bug报告所述:http://bugs.mysql.com/bug.php?id=66647 对于Connector/NET,您必须使用本机4.1样式密码(即old_passwords=0)。

另一个选项是Windows样式认证,这也得到支持,但您需要一些MySql商业版(标准MySql服务器不支持Windows认证)。


1

Mysql_old_password 是一个临时的功能,旨在用于旧版 mysql 客户端,在 4.1.1 之后的版本中,以便对先前的 mysql 服务器进行身份验证。

在 mysql 服务器的 my.ini 文件中设置变量 old_passwords=1 应该可以启用此功能。


1
有没有办法在连接字符串中指定它?因为我无法访问MySQL服务器设置。 - Cristiano Nascimento
我实在不知道。我对Visual Studio并不是很了解,只是对MySQL有点了解。但我的最佳猜测是你不能使用连接字符串来完成这个操作,因为这是需要由服务器在启动时激活的方法。说实话,你应该尝试找出为什么你的连接器会尝试使用旧密码,因为你应该避免这种情况。(加密不安全) - Damien Overeem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接