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

Linda Hamilton
发布: 2024-10-31 05:53:30
原创
336 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!