执行sql 报错Public Key Retrieval is not allowed
时间: 2023-11-20 08:56:36 浏览: 240
当使用MySQL 8.x版本连接时,可能会出现“Public Key Retrieval is not allowed”的错误。这是因为MySQL 8.x版本默认情况下禁用了明文密码传输,需要使用加密的方式进行连接。为了解决这个问题,可以尝试以下两种方法:
1.在JDBC连接URL中添加allowPublicKeyRetrieval=true参数,例如:
```java
jdbc:mysql://localhost:3306/test?useSSL=false&allowPublicKeyRetrieval=true
```
2.在JDBC连接URL中添加sslMode=DISABLED参数,例如:
```java
jdbc:mysql://localhost:3306/test?useSSL=false&sslMode=DISABLED
```
以上两种方法都可以解决“Public Key Retrieval is not allowed”的错误,具体使用哪种方法取决于你的具体情况。
相关问题
sql 报错 Public Key Retrieval is not allowed 如何解决
这个报错是由于MySQL默认不允许从远程主机上获取公钥,需要将`allowPublicKeyRetrieval`参数设置为`true`,才能从远程主机上获取公钥。具体的解决方法如下:
1. 修改连接字符串:在连接字符串的末尾添加`?allowPublicKeyRetrieval=true`,如下所示:
```
jdbc:mysql://localhost:3306/mydatabase?allowPublicKeyRetrieval=true
```
2. 在MySQL配置文件中修改参数:打开MySQL的配置文件my.cnf,在[mysqld]节点下添加以下代码:
```
[mysqld]
...
...
allow_public_key_retrieval=true
```
3. 在MySQL命令行中修改参数:在MySQL命令行中执行以下命令:
```
mysql> SET GLOBAL allow_public_key_retrieval=TRUE;
```
DBevaer 连接mysql 报错 Public Key Retrieval is not allowed
出现 "Public Key Retrieval is not allowed" 的错误通常是由于 MySQL 8.0 使用了 caching_sha2_password 认证插件,而旧版本的 MySQL 客户端(如 DBeaver)不支持该插件所导致的。可以通过在 MySQL 中更改用户的认证插件或者在 DBeaver 中使用新版的 MySQL 驱动解决此问题。
解决此问题的方法有两种:
1. 更改 MySQL 用户的认证插件为 mysql_native_password:可以使用以下 SQL 语句更改用户的认证插件:
ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
其中,'username' 和 'password' 分别为要更改的用户名和密码。
2. 在 DBeaver 中使用新版的 MySQL 驱动:可以在 DBeaver 的官网上下载新版的 MySQL 驱动,并将其配置到 DBeaver 中使用。
阅读全文