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 13:04:51 浏览: 377
这个错误信息表明你在连接数据库时遇到了一个问题。具体来说,它指出了一个 `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 get schema version. Underlying cause: java.sql.SQLException : Access denied for user 'root'@'192.168.10.130' (using password: YES) SQL Error code: 1045
这个错误是因为 HiveMetaStore 无法连接到 MySQL 数据库。错误信息显示访问被拒绝,可能是因为 MySQL 数据库的用户名或密码不正确,或者该用户没有权限连接到 MySQL 数据库。
建议您检查以下几个方面:
1. 检查 MySQL 数据库的用户名和密码是否正确。
2. 确认 MySQL 数据库的 IP 地址是否正确。
3. 确认 MySQL 数据库是否已经启动。
4. 确认 MySQL 数据库中是否已经创建了 HiveMetaStore 所需的数据库和表。
5. 确认 MySQL 数据库的防火墙设置是否允许 HiveMetaStore 访问。
如果以上步骤无法解决问题,您可以尝试重新安装和配置 HiveMetaStore。
阅读全文