图形界面工具在连接MySQL8时出现“Authentication plugin‘caching_sha2_password‘ cannot be loaded”错误。

本文讲述了在使用MySQL8时,由于加密规则从mysql_native_password变为caching_sha2_password可能导致的连接问题。提供了两种解决方案:升级图形界面工具或在命令行下修改用户密码规则。详细步骤包括使用ALTERUSER和FLUSHPRIVILEGES命令。

#我们在使用图形化工具连接MySQL8时有时会出现以下报错信息

出现这个原因是MySQL8之前的版本中加密规则是mysql_native_password,而在MySQL8之后,加密规则是caching_sha2_password

解决问题方法有两种,第一种是升级图形界面工具版本,第二种是把MySQL8用户登录密码加密规则还原成mysql_native_password
第二种解决方案如下,用命令行登录MySQL数据库之后,执行如下命令修改用户密码加密规则并更新用 户密码,这里修改用户名为“root@localhost”的用户密码规则为“mysql_native_password”,密码值为 “123456”,如下所示:
#使用mysql数据库
USE mysql;

#修改'root'@'localhost'用户的密码规则和密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你自己的密码';

#刷新权限
FLUSH PRIVILEGES;

在使用 Qt 连接 MySQL 数据库,如果出现错误提示与 `caching_sha2_password` 认证插件相关的加载失败问题,通常是由于客户端库不支持 MySQL 8.0 及以上版本默认使用的 `caching_sha2_password` 插件所致。 MySQL 8.0 引入了新的默认认证插件 `caching_sha2_password`,而某些较旧的客户端库(如某些版本的 Qt SQL 模块或其依赖的 MySQL 客户端库)可能无法识别或加载该插件,导致连接失败。这种问题在使用 Qt 的 `QSqlDatabase` 类连接 MySQL 服务器尤为常见,特别是在开发环境中使用的 MySQL 客户端库版本较旧的情况下。 ### 解决方案 1. **修改 MySQL 用户的认证方式** 可以将用户的认证方式从 `caching_sha2_password` 改为 `mysql_native_password`,这是旧版本 MySQL 使用的认证方式,兼容性更好。 使用 MySQL 命令行工具执行以下语句: ```sql ALTER USER 'your_user'@'your_host' IDENTIFIED WITH mysql_native_password BY 'your_password'; FLUSH PRIVILEGES; ``` 这将更改指定用户的认证方式为 `mysql_native_password`,并刷新权限以使更改生效[^2]。 2. **更新 Qt 或 MySQL 客户端库** 确保使用的 Qt 版本及其依赖的 MySQL 客户端库(libmysqlclient 或 mariadb-connector)支持 `caching_sha2_password` 插件。 如果使用的是静态编译的 Qt 库,可能需要重新配置并链接支持新认证插件的 MySQL 客户端库。 3. **配置 Qt 数据库连接参数** 在 Qt 代码中设置连接参数,可以尝试显式指定字符集和连接属性,以避免潜在的兼容性问题: ```cpp QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("your_database"); db.setUserName("your_user"); db.setPassword("your_password"); db.setConnectOptions("CLIENT_MULTI_STATEMENTS"); ``` 4. **检查插件路径和权限** 如果希望保留 `caching_sha2_password` 插件,需确保 MySQL 服务器上的插件路径配置正确,并且客户端库可以访问相应的 `.so` 文件(如 `/usr/lib/mysql/plugin/caching_sha2_password.so`)[^1]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值