com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:不允许检索公钥

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:不允许检索公钥,mysql,maven,spring-boot,java-8,mysql-8.0,Mysql,Maven,Spring Boot,Java 8,Mysql 8.0,在安装mysql8服务器并尝试连接之后,我在java8上运行了一个springboot项目,我发现了错误 com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed. 最初我安装了mysql5,它工作正常,但是当我安装mysql8服务器时,我收到了错误com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransie

在安装mysql8服务器并尝试连接之后,我在java8上运行了一个springboot项目,我发现了错误

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed.
最初我安装了mysql5,它工作正常,但是当我安装mysql8服务器时,我收到了错误
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:不允许检索公钥。

我确实使用了
&allowPublicKeyRetrieval=true
,但对我帮助不大。我只是无法继续,无法连接到数据库。我也无法再次将MySql降级到5

我使用idea intelliJ作为IDE。我还尝试添加以下依赖项:

<artifactId>mysql-connector-java</artifactId>
<version>8.0.14</version>

你可以安装像HeidiSQL这样的客户端应用来解决这个问题 或 另一个选项是,您应该将客户机选项添加到mysql连接器allowPublicKeyRetrieval=true,以允许客户机自动从服务器请求公钥。请注意,AllowPublicKeyRetrieval=True可能允许恶意代理执行MITM攻击以获取明文密码,因此默认为False,必须显式启用

当用于测试/开发目的时,您还可以尝试添加usesssl=false 如下图所示:

jdbc:mysql://localhost:3306/db?allowPublicKeyRetrieval=true&useSSL=false

我非常确定
allowPubliceRetrieval=true
应该可以工作。能否向我们展示您的application.properties(至少是您正在使用的JDBC URL)。#server.port=8090##Spring数据源(DataSourceAutoConfiguration&DataSourceProperties)spring.datasource.url=jdbc:mysql://localhost:3306/lms?useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&useSSL=false spring.datasource.username=root spring.datasource.password=###Hibernate属性#SQL方言使Hibernate为所选数据库生成更好的SQL spring.jpa.Properties.Hibernate.dial=您在MySQL 8中使用的是MySQL 8驱动程序,但您使用的是
mysql5innodbdialent
?听起来不对吗?另外,请将这些信息编辑到问题本身中。在问题的底部,您应该会看到一个显示“编辑”的链接。即使更改为MySQL8InnoDBDialent,问题仍然存在。您能否显示使用8.0.14版本的MySQL connector时获得的堆栈跟踪?您显示的stacktrace是由旧版本的MySQL驱动程序生成的。
jdbc:mysql://localhost:3306/db?allowPublicKeyRetrieval=true&useSSL=false