hive中org.datanucleus.exceptions.NucleusException: Attempt to invoke the "HikariCP" plugin to create a ConnectionPool gave an error : Failed to initialize pool: Public Key Retrieval is not allowed
时间: 2024-03-19 08:45:13 浏览: 96
这个异常是因为在使用 HikariCP 连接池时,JDBC 驱动程序使用了 MySQL 8+ 的默认身份验证插件(caching_sha2_password)而没有启用 TLS(Transport Layer Security)加密。因此,MySQL 8+ 默认情况下禁止公钥检索,并且连接池无法正常工作。
解决方法是在 MySQL 8+ 中启用 TLS 加密,或者使用旧版的身份验证插件(mysql_native_password)来连接数据库。你可以在创建 HikariCP 连接池时添加以下属性来使用旧版身份验证插件:
```
jdbcUrl=jdbc:mysql://localhost:3306/mydatabase?useSSL=false&allowPublicKeyRetrieval=true&useLegacyDatetimeCode=false&serverTimezone=UTC
```
其中 `allowPublicKeyRetrieval=true` 参数启用公钥检索,`useSSL=false` 参数禁用 TLS 加密。
如果你是在 Hive 中使用 HikariCP 连接池,则可以在 Hive 配置文件中添加以下属性:
```
javax.jdo.option.ConnectionURL=jdbc:mysql://localhost:3306/mydatabase?useSSL=false&allowPublicKeyRetrieval=true&useLegacyDatetimeCode=false&serverTimezone=UTC
```
其中 `javax.jdo.option.ConnectionURL` 属性指定了连接数据库的 URL,包括启用旧版身份验证插件的参数。这些属性的具体值根据你的数据库和应用配置而定,需要进行相应的修改。
阅读全文