使用MySQL C ++连接器连接被拒绝

时间:2013-05-16 05:09:29

标签: c++ mysql-connector mysql

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

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

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

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

1 个答案:

答案 0 :(得分:2)

这不是连接器问题,而是数据库问题:这个blog post涵盖了它。基本上,密码哈希从4.1开始改变了,但旧方法保留了OLD_PASSWORD函数来访问它。但是,5.6版本决定简单地拒绝仍然基于该身份验证方法的连接。

所以你有2个解决方案:

  1. 作为第一步,使用服务器--skip-secure-auth启动参数,按照mysql文档提示的快速和肮脏的工作进行操作:这是一个短期解决方案,可在升级服务器后使数据库连接再次运行
  2. 升级您的数据库内容,将旧加密方法的所有帐户密码更新为新加密:这是首选方法,因为您将有效地使用新加密,并避免上述交换机仍处于不安全状态允许。 在数据库更新后,不要忘记从第一个解决方案中删除交换机