原创

Java项目启动时报Public Key Retrieval is not allowed错误


问题现象

项目使用Springboot框架通过JPA操作MySQL数据库,数据库版本是8.0.33,在项目启动时报错。

具体报错内容:

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed

at sun.reflect.NativeConstructorAccessorImpl....

....

....

....

Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

at org.hibernate.engine.jdbc.dialect.internal...

...

...

...

原因分析

在官网搜索public key相关信息,可以查询到数据库有一个AllowPublicKeyRetrieval的参数,默认是false,表示数据库连接不允许客户端从服务端获取公钥。

解决方法

根据官方信息可知,只需在数据库连接后面添加"$allowPublicKeyRetrieval=true"即可。

datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://***.***.***.***:3306/***
	?characterEncoding=utf-8
	&useSSL=false
	&serverTimezone=Asia/Shanghai
	&allowPublicKeyRetrieval=true
    username: ****
    password: ****
Java
CentOS
MySQL
  • 作者:一介闲人(联系作者)
  • 发表时间: 2024-03-05 10:45
  • 版权声明:原创-转载需保持署名
  • 公众号转载:请在文末添加本文链接
  • 评论