1:Failed to obtain JDBC Connection; nested exception is java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed

错误原因

当你使用 MySQL 8.0 及以上版本的 JDBC 驱动连接数据库时,若使用了默认的身份验证插件 caching_sha2_password,就可能需要客户端检索公钥来完成身份验证。而默认情况下,这个公钥检索功能是被禁用的,所以会抛出 Public Key Retrieval is not allowed 异常。

解决办法

方法一

在你的 JDBC 连接 URL 里添加 allowPublicKeyRetrieval=true 参数,以此来允许客户端检索公钥。示例如下:

spring.datasource.url=jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&useSSL=false

方法二:修改 MySQL 用户的身份验证插件

你可以把 MySQL 用户的身份验证插件改成 mysql_native_password,这样就无需公钥检索了。执行以下 SQL 语句:

-- 修改用户密码并指定身份验证插件
ALTER USER 'your_username'@'your_host' IDENTIFIED WITH mysql_native_password BY 'your_password';
-- 刷新权限 FLUSH PRIVILEGES;
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐