这个错误通常是由于 MySQL 8.0 中的新特性导致的。默认情况下,MySQL 8.0 使用 caching_sha2_password
作为认证插件,而你需要在连接 URL 中明确允许公钥检索或者使用老版本的认证方式 mysql_native_password
。
解决方案:
方法 1:允许公钥检索
在连接 URL 中添加 allowPublicKeyRetrieval=true
参数
spring:
datasource:
url: jdbc:mysql://192.168.100.110:3306/camunda?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: root
方法 2:更改 MySQL 用户的认证插件
将 MySQL 用户的认证插件更改为 mysql_native_password
。
1、登录 MySQL:
mysql -u root -p
2、切换到 mysql
数据库:
USE mysql;
3、更改用户的认证插件:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的mysql密码';
FLUSH PRIVILEGES;
总结
以上方法可以解决 Public Key Retrieval is not allowed
错误。首先,尝试在连接 URL 中添加 allowPublicKeyRetrieval=true
参数。如果问题仍然存在,请将 MySQL 用户的认证插件更改为 mysql_native_password
。希望这些方法能够帮助你解决问题。