java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
Failed to obtain JDBC Connection; nested exception is java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
·
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;
更多推荐
所有评论(0)