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

标签 c++ mysql-connector mysql

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

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

该问题似乎是由使用不同版本的 libmysql.dll 引起的。

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

最佳答案

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

所以你有两个解决方案:

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

关于c++ - 使用 MySQL C++ 连接器连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16579376/

相关文章:

Java 赋值运算符行为与 C++

python - 在python中使用mysql连接器插入数据

php - 使用内爆创建新表

grails - Grails 3应用程序-使用Turo的pushy插件的Apple Push通知

php - 如果已购买图书,则将其从搜索结果中删除

mysql选择列a,其中最大(列b)按列c分组

c++ - 我不明白编译器错误

c++ - 在运算符中使用 `this`

c++ - c++17中的非类型模板参数可以是decltype(auto)吗?

c# - 为什么我的程序在调用 "OpenAsync()"时终止?