hive 启动时候Public Key Retrieval is not allowed
时间: 2023-11-03 18:59:51 浏览: 49
当Hive启动时出现"Public Key Retrieval is not allowed"错误时,可以尝试以下解决方式:
1. 在Hive的配置文件(hive-site.xml)中添加以下属性:
```
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?serverTimezone=GMT&allowPublicKeyRetrieval=true&useSSL=false&characterEncoding=utf8</value>
</property>
```
注意替换连接URL中的数据库名称和其他参数。
2. 如果使用的是HiveServer2,可以在启动命令中指定连接URL,例如:
```
hive --hiveconf hive.server2.jdbc.url="jdbc:mysql://localhost:3306/hive?serverTimezone=GMT&allowPublicKeyRetrieval=true&useSSL=false&characterEncoding=utf8"
```
3. 确保MySQL的版本高于8.0,并且MySQL连接驱动程序的版本符合要求。有时候,更新MySQL连接驱动程序可以解决该问题。
相关问题
Underlying cause: java.sql.SQLNonTransientConnectionException : Public Key Retrieval is not allowed SQL Error code: 0 org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
这个错误信息表明你在连接数据库时遇到了一个问题。具体来说,它指出了一个 `java.sql.SQLNonTransientConnectionException` 异常,并提到了 "Public Key Retrieval is not allowed" 错误。
这个错误通常出现在使用MySQL连接时,当服务器不允许使用公钥检索时会发生。这通常是由于MySQL服务器的安全设置引起的。
要解决这个问题,你可以尝试以下几种方法:
1. 在连接URL中添加 `allowPublicKeyRetrieval=true` 参数。例如:`jdbc:mysql://localhost:3306/database?allowPublicKeyRetrieval=true`
2. 更新MySQL驱动程序版本到较新的版本。你可以从MySQL官方网站或Maven中央仓库下载最新版本的驱动程序,并将其替换为你的项目中使用的旧版本。
3. 检查MySQL服务器的配置,确保公钥检索是允许的。你可以通过修改MySQL服务器的配置文件(通常是 `my.cnf` 或 `my.ini`)来启用公钥检索。
请注意,如果你不熟悉MySQL服务器的配置,请谨慎修改配置文件,最好在修改之前备份文件。如果你无法解决问题,建议咨询系统管理员或数据库管理员以获得进一步的帮助。
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
这个异常是因为在使用 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,包括启用旧版身份验证插件的参数。这些属性的具体值根据你的数据库和应用配置而定,需要进行相应的修改。