2013-05-16 49 views
2

连接到MySQL数据库,当我得到这个错误:使用MySQL C++连接器连接被拒绝

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 /连接器源代码,连接失败,出现上述错误。所以这导致我认为构建DLL文件时可能会在源代码中进行设置,我必须遵守才能正确连接。它可能是什么?

+0

什么是您的运行数据库服务器版本?是你在问题中提到的那个,还是你为了获得连接器源而安装的那个? – didierc

回答

2

这不是一个连接器问题,而是一个数据库之一:这个blog post覆盖它。基本上,密码散列从4.1开始改变,但旧方法保留在OLD_PASSWORD函数中以访问它。但是,5.6版本决定只是基于该认证方法拒绝连接。

所以,你有2个解决方案:

  1. 作为第一步,按照快速和肮脏的工作,各地通过MySQL文档暗示,通过使用服务器--skip-secure-auth启动参数:这是一个短期的解决方案,使升级服务器后,您的数据库连接再次工作
  2. 升级您的数据库内容,方法是将所有使用旧加密方法的帐户密码更新为新的:这是首选方法,因为您将有效地使用新加密,并且避免上述开关仍然允许的不安全情况。 一旦你的数据库是最新的,不要忘记从第一个解决方案中删除开关