mysql 出现Public Key Retrieval is not allowed
时间: 2024-04-14 11:24:52 浏览: 82
当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时出现"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了。
docker mysql映射 Public Key Retrieval is not allowed Public Key Retrieval is not allowed
这个问题可能是因为 MySQL 8.0 默认使用了 caching_sha2_password 身份验证插件,而该插件需要使用公钥来进行身份验证。可以尝试修改 MySQL 用户的身份验证插件为 mysql_native_password,方法如下:
1. 进入 MySQL 容器内部:`docker exec -it <container_name> bash`
2. 登录 MySQL:`mysql -u <username> -p`
3. 修改用户的身份验证插件:`ALTER USER '<username>'@'%' IDENTIFIED WITH mysql_native_password BY '<password>';`
4. 刷新权限:`FLUSH PRIVILEGES;`
5. 退出 MySQL:`exit`
6. 退出容器:`exit`
阅读全文