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.
时间: 2023-08-24 08:04:51 浏览: 74
这个错误信息表明你在连接数据库时遇到了一个问题。具体来说,它指出了一个 `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服务器的配置,请谨慎修改配置文件,最好在修改之前备份文件。如果你无法解决问题,建议咨询系统管理员或数据库管理员以获得进一步的帮助。
相关问题
Underlying cause: java.sql.SQLNonTransientConnectionException : Public Key Retrieval is not allowed
这个错误是由于MySQL连接驱动程序的默认设置更改所导致的。在MySQL 8.0.11之后的版本中,加密握手的默认设置已更改为“caching_sha2_password”,而不是以前的“mysql_native_password”。这可能会导致一些旧的应用程序无法连接到MySQL服务器并抛出“Public Key Retrieval is not allowed”异常。要解决此问题,可以尝试以下两种方法之一:
1. 在连接URL中添加“allowPublicKeyRetrieval=true”参数,例如:
```
jdbc:mysql://localhost:3306/mydatabase?allowPublicKeyRetrieval=true
```
2. 将MySQL用户的加密握手设置更改为旧的“mysql_native_password”,例如:
```
ALTER USER 'myuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mypassword';
```
请注意,第二种方法可能会降低安全性,因此建议使用第一种方法。
org.apache.hadoop.hive.metastore.hivemetaexception: failed to load driver underlying cause: java.lang.classnotfoundexception : com.mysql.jdbc.driver
### 回答1:
这个错误是由于Hive元数据存储无法加载MySQL驱动程序引起的。具体原因是Java无法找到com.mysql.jdbc.driver类。可能是因为MySQL驱动程序未正确安装或未在Hive配置中正确设置。需要检查Hive配置文件中的JDBC驱动程序路径和MySQL驱动程序是否正确安装。
### 回答2:
这个错误提示是在使用Hive元数据存储来管理Hive元数据时出现的。它表明Hive元数据存储无法加载MySQL驱动程序,因为找不到该驱动程序的类。
造成这个问题的原因可能有几个。可能是MySQL驱动程序没有正确安装,或者Hibernate配置文件中没有正确指定MySQL驱动程序的路径。还有一种可能性是,MySQL驱动程序的版本不兼容当前的Hive版本。
要解决这个问题,可以按照以下步骤进行操作:
1. 检查MySQL驱动程序是否已正确安装并位于正确的位置。可以尝试重新安装驱动程序,并确保将其放置在正确的目录下。
2. 检查Hibernate配置文件是否将MySQL驱动程序的路径正确地指定为参数。这需要查看Hive元数据存储中的hive-site.xml文件,并检查MySQL连接字符串是否正确。
3. 如果使用的Hive版本比MySQL驱动程序的版本旧或新,请确保两者兼容。可以尝试升级或降级MySQL驱动程序的版本,并确保它与当前的Hive版本兼容。
总之,这个错误提示是在使用Hive元数据存储来管理Hive元数据时出现的。它表明Hive元数据存储无法加载MySQL驱动程序,因为找不到该驱动程序的类。要解决这个问题,需要检查MySQL驱动程序是否正确安装并位于正确的位置,以及确保Hibernate配置文件正确指定了MySQL驱动程序的路径,并且MySQL驱动程序的版本与当前的Hive版本兼容。
### 回答3:
这个错误信息的意思是,Hive元数据存储在MySQL数据库中,并且Hive无法找到mysql的JDBC驱动程序来连接MySQL数据库,因此Hive元数据无法加载成功。在Hadoop生态系统中,Hive是一个优秀的数据仓库,它可以使用HQL查询数据,但前提条件是需要先配置好Hive元数据,并将其保存在数据库中。
出现这个错误可能有很多原因,但最常见的原因是缺少正确的JDBC驱动程序。为了解决这个问题,我们需要按照以下步骤进行操作:
第一步是确定你的MySQL版本,然后下载对应版本的JDBC驱动程序。在下载后,将JDBC驱动程序复制到所有Hive和Hadoop节点上的相同位置。
第二步是修改Hive配置文件hive-site.xml。在这个文件中,你需要增加以下配置项:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://yourhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
第三步是重新启动Hive服务,并尝试连接Hive元数据。如果你还想将其他服务与Hive集成,你还需要为它们设置正确的JDBC驱动程序。
综上所述,当Hive无法加载MySQL JDBC驱动程序时,这个错误就会出现。为了解决这个问题,我们需要下载和配置正确的JDBC驱动程序,并修改Hive的配置文件。如果你仍然无法解决这个问题,你可以通过检查Hive和MySQL的日志来进一步排查故障。