首页  >  文章  >  数据库  >  Java连接MySQL时出现“不允许公钥检索”异常如何解决?

Java连接MySQL时出现“不允许公钥检索”异常如何解决?

Linda Hamilton
Linda Hamilton原创
2024-10-31 05:53:30338浏览

How to Resolve the

连接 Java - MySQL:解决“不允许公钥检索”异常

尝试使用以下方式建立与 MySQL 数据库的连接时Java 和 8.0.11 连接器,用户可能会遇到以下异常:

<code class="java">Exception in thread "main" java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed</code>

解决方案:

此异常表明客户端正在尝试检索公共来自服务器的密钥,但不允许检索公钥。要解决此问题,我们需要通过在 MySQL 连接字符串中添加 allowedPublicKeyRetrieval=true 选项来显式允许公钥检索。

修改的连接管理器类:

<code class="java">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 );
    
    // Allow public key retrieval
    dataSource.setAllowPublicKeyRetrieval( true );
    
    return dataSource.getConnection();
}</code>

通过将allowPublicKeyRetrieval设置为true,客户端有权向服务器请求公钥。这解决了“不允许公钥检索”异常。

其他注意事项:

  • 启用公钥检索可能会暴露安全风险。考虑在测试或开发后禁用它。
  • 或者,仅出于开发目的设置 useSSL=false。不要在生产环境中使用它,因为它会禁用 SSL 加密。

以上是Java连接MySQL时出现“不允许公钥检索”异常如何解决?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn