我尝试使用连接器8.0.11将MySQL数据库与Java连接起来。一切似乎都很好,但我得到了这个例外:
Exception in thread "main" java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed at
com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:108) at
com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95) at
com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at
com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:862) at
com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:444) at
com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230) at
com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226) at
com.mysql.cj.jdbc.MysqlDataSource.getConnection(MysqlDataSource.java:438) at
com.mysql.cj.jdbc.MysqlDataSource.getConnection(MysqlDataSource.java:146) at
com.mysql.cj.jdbc.MysqlDataSource.getConnection(MysqlDataSource.java:119) at
ConnectionManager.getConnection(ConnectionManager.java:28) at
Main.main(Main.java:8)
以下是我的连接管理器课程:
public class ConnectionManager {
public static final String serverTimeZone = "UTC";
public static final String serverName = "localhost";
public static final String databaseName ="biblioteka";
public static final int portNumber = 3306;
public static final String user = "anyroot";
public static final String password = "anyroot";
public static Connection getConnection() throws SQLException {
MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setUseSSL( false );
dataSource.setServerTimezone( serverTimeZone );
dataSource.setServerName( serverName );
dataSource.setDatabaseName( databaseName );
dataSource.setPortNumber( portNumber );
dataSource.setUser( user );
dataSource.setPassword( password );
return dataSource.getConnection();
}
}
对于DBeaver用户:
>
右键单击连接,选择“编辑连接”
在“连接设置”屏幕(主屏幕)上单击“编辑驱动程序设置”
单击“连接属性”(在最新版本中称为“驱动程序属性”)
右键单击“用户属性”区域并选择“添加新属性”
添加两个属性:“useSSL”和“lowPublicKeyRetrival”
双击“值”列,将其值设置为“false”和“true”
您应该将客户端选项添加到mysql连接器中,以允许客户端自动从服务器请求公钥。请注意,allowPublicKeyRetrieval=True可能允许恶意代理执行MITM攻击以获取明文密码,因此默认情况下为False,必须显式启用。
https://mysql-net.github.io/MySqlConnector/connection-options/
当您将其用于测试/开发目的时,也可以尝试添加usesl=false
示例:
jdbc:mysql://localhost:3306/db?allowPublicKeyRetrieval=true&useSSL=false
问题内容: 我尝试使用连接器8.0.11将MySql数据库与Java连接。一切似乎都还可以,但是我有一个例外: 线程“主”中的异常java.sql.SQLNonTransientConnectionException: 不允许公共密钥检索 堆栈跟踪: 连接器管理器: 问题答案: 您应该将客户端选项添加到mysql- connector中,以允许客户端自动从服务器请求公共密钥。请注意,这可能允许恶意
今年6月初,我运行了一个应用程序,没有出现任何问题。今天再次尝试后,控制台中出现以下错误: 有没有关于如何修复的想法? 我对此进行了研究,但没有发现任何特定于Spring Boot应用程序的内容。 应用程序中的设置。属性:
我有一个连接到MySQL的spring boot应用程序,它工作得很好,除非它被停靠,当它停靠时,会抛出一个异常: 我试图将连接字符串更改为 但是没有发生任何事情,仍然导致同样的异常。 Dockerfile文件:
我目前正在通过视频教程学习Servlet和Jsp,我正在尝试连接到MySql数据库,但这样做很困难,我已经按照教程中采取的所有步骤进行了操作,但仍然无法连接,起初我得到的异常是java.sql.SQLException:没有找到适合com.mysql.jdbc.驱动程序的驱动程序java.sql.DriverManager 我在网上检查了一个可能的解决方案,但没有一个对我有用,现在我将MySQL-
我有一个spring boot项目在java8上运行,在我安装mysql8服务器并尝试连接之后,我发现了错误 最初我安装了mysql5,它工作正常,但是当我安装mysql8服务器时,我收到了错误消息。mysql。jdbc。例外情况。jdbc4.MySQLNonTransientConnectionException:不允许检索公钥 。 我确实使用了
问题内容: 我正在尝试创建一个注册页面,它将信息添加到SQL表中。这是我执行此操作的PHP代码…谁能告诉我这是什么错误? 它给出了以下错误: 问题答案: 如果您的mysql数据库不在同一服务器(本地主机)上,则需要为该服务器的mysql用户/数据库从远程服务器授予访问权限。请参阅本文以获取一些可能对您有所帮助的步骤。听起来好像很遥远。 https://support.rackspace.com/h