mysql 遇到 Public Key Retrieval is not allowed
时间: 2024-01-11 13:22:05 浏览: 74
当使用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驱动程序。
请注意,以上两种方法可以单独使用,也可以同时使用。根据你的具体情况选择适合你的方法。
相关问题
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`
为什么我利用dbeaver 连接mysql显示Public Key Retrieval is not allowed Public Key Retrieval is not allowed
当使用DBeaver连接MySQL时,出现"Public Key Retrieval is not allowed"错误通常是由于MySQL服务器的配置问题引起的。这个错误表示MySQL服务器不允许使用公钥检索。
解决这个问题的方法是修改MySQL服务器的配置文件,具体步骤如下:
1. 打开MySQL服务器的配置文件。在Linux系统上,配置文件通常位于/etc/mysql/mysql.conf.d/目录下,文件名为mysqld.cnf。在Windows系统上,配置文件通常位于MySQL安装目录下的data文件夹中,文件名为my.ini或my.cnf。
2. 在配置文件中找到[mysqld]部分,并添加或修改以下行:
```
[mysqld]
...
skip-grant-tables
```
这将允许在连接时跳过权限验证。
3. 保存并关闭配置文件。
4. 重启MySQL服务器,使配置更改生效。
请注意,这种方法只是临时解决方案,它会绕过MySQL的权限验证机制。在生产环境中,建议使用更安全的方法来解决此问题。
阅读全文