2

连接到 MySQL 数据库时出现此错误:

Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)

使用不同版本的 libmysql.dll 似乎会出现此问题。

我可以使用从安装 MySQL Community Server (5.6.0) 获得的先前版本进行连接。但是,当我自己构建 libmysql.lib 和 .dll 时,使用 MySQL C/connector 源代码,连接失败并出现上述错误。所以这让我想到,在构建 DLL 文件时,源代码中可能有一个设置,我必须观察它才能正确连接。可能是什么?

4

1 回答 1

2

这不是连接器问题,而是数据库问题:这篇博文涵盖了它。基本上,密码散列从 4.1 开始发生了变化,但旧方法保留在OLD_PASSWORD访问它的函数中。但是,5.6 版决定简单地拒绝仍然基于该身份验证方法的连接。

所以你有2个解决方案:

  1. 作为第一步,通过使用服务器--skip-secure-auth启动参数,遵循 mysql 文档提示的快速而肮脏的工作:这是升级服务器后让您的数据库连接再次工作的短期解决方案
  2. 通过将使用旧加密方法的所有帐户密码更新为新方法来升级您的数据库内容:这是首选方法,因为您将有效地使用新加密,并避免上述开关仍然允许的不安全情况。一旦您的数据库是最新的,请不要忘记从第一个解决方案中删除开关。
于 2013-05-16T07:48:59.120 回答