首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不允许com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:公钥检索

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

Stack Overflow用户
提问于 2019-02-07 13:07:17
回答 1查看 3.6K关注 0票数 2

在安装了java8服务器并试图连接之后,我在mysql8上运行了一个spring引导项目,我得到了错误

代码语言:javascript
运行
复制
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed.

最初我安装了mysql5,它运行良好,但是当我安装mysql8服务器时,我得到的是错误com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed.

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

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

代码语言:javascript
运行
复制
<artifactId>mysql-connector-java</artifactId>
<version>8.0.14</version>

然而,这些解决方案都不起作用。

下面的错误是当我从8.0.14版本恢复mysql-连接器-java时得到的,但是当我使用8.0.14版本时也会出现类似的错误。即使在更改为MYSQL8InnoDBDialect之后,问题仍然存在。

代码语言:javascript
运行
复制
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_181]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_181]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_181]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_181]
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.Util.getInstance(Util.java:408) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:878) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:874) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1777) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1224) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2199) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2230) ~[mysql-connector-java-5.1.47.jar:5.1.47]
EN

回答 1

Stack Overflow用户

发布于 2020-04-19 04:51:19

您可以安装客户端应用程序(如HeidiSQL )或其他数据库客户端来解决问题,.You应该将客户端选项添加到mysql-连接器allowPublicKeyRetrieval=true中,以允许客户端自动从服务器请求公钥。请注意,AllowPublicKeyRetrieval=True可能允许恶意代理执行MITM攻击以获取明文密码,因此默认情况下它是假的,必须显式启用。

当您将useSSL=false用于测试/开发目的时,您也可以尝试添加它,如下所示:

代码语言:javascript
运行
复制
jdbc:mysql://localhost:3306/db?allowPublicKeyRetrieval=true&useSSL=false
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54574073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档