mysql出现Public Key Retrieval is not allowed
时间: 2023-10-28 15:59:18 浏览: 46
当在连接MySQL时出现"Public Key Retrieval is not allowed"错误时,这通常是因为MySQL账户的密码是使用sha256方式加密的,而客户端在连接MySQL时没有使用TLS协议传输参数。在这种情况下,需要允许客户端自动从服务器请求公钥才能解决此问题。
有两种解决方法:
1. 在客户端的驱动连接参数中增加"allowPublicKeyRetrieval=true&useSSL=false"。这样可以允许客户端获取公钥,并且不使用SSL协议传输参数。
2. 修改MySQL账户的密码加密方式。如果之前使用的是"alter user 'root'@'localhost' identified by 'xxx'"语句来修改root用户的密码,那么MySQL会默认使用sha256加密。要解决问题,可以直接修改账户密码的加密方式。使用"ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxx'"语句来修改密码,这样问题就可以解决了。另外,如果需要远程登录MySQL,还需要执行"use mysql; update user set host='%' where user='root';"语句来修改用户的host。
通过以上两种方法,您应该可以成功解决"Public Key Retrieval is not allowed"错误,并能够正常连接MySQL了。
相关问题
mysql 出现Public Key Retrieval is not allowed
当MySQL出现"Public Key Retrieval is not allowed"错误时,这通常是由于MySQL连接配置中的SSL选项导致的。该错误表示MySQL服务器不允许使用公钥检索。
要解决此问题,您可以尝试以下几种方法:
1. 在连接字符串中禁用SSL:在连接MySQL时,将ssl-mode选项设置为"disabled",以禁用SSL连接。例如:
```
mysql -u username -p --ssl-mode=disabled
```
2. 更新MySQL配置文件:编辑MySQL配置文件(通常是my.cnf或my.ini),找到[mysqld]部分,并添加或修改以下行:
```
[mysqld]
skip_ssl
```
3. 更新用户权限:如果您是使用特定用户连接到MySQL,请确保该用户具有适当的权限。您可以使用以下命令为用户授予所有权限:
```
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';
FLUSH PRIVILEGES;
```
请注意,这些解决方法可能因您的具体情况而有所不同。如果问题仍然存在,请提供更多详细信息,以便我能够更好地帮助您。
mysql 遇到 Public Key Retrieval is not allowed
当使用MySQL 8.0版本时,可能会遇到"Public Key Retrieval is not allowed"的错误。这个错误是由于MySQL 8.0默认启用了新的身份验证插件caching_sha2_password,而旧版本的MySQL客户端可能不支持该插件导致的。
解决这个问题的方法有两种:
1. 修改MySQL用户的身份验证插件为mysql_native_password。可以通过以下步骤来修改:
1. 使用root用户登录到MySQL服务器。
2. 运行以下命令更改用户的身份验证插件:
```sql
ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
```
其中,'username'是你要修改的用户名,'localhost'是你的主机名,'password'是你要设置的密码。
3. 刷新权限:
```sql
FLUSH PRIVILEGES;
```
2. 更新MySQL客户端驱动程序。如果你使用的是Java开发,可以更新你的JDBC驱动程序到最新版本,以确保它支持caching_sha2_password插件。你可以从MySQL官方网站或者Maven仓库下载最新的MySQL Connector/J驱动程序。
请注意,以上两种方法可以单独使用,也可以同时使用。根据你的具体情况选择适合你的方法。