连接mysql 时 报 Public Key Retrieval is not allowed
时间: 2023-10-14 16:27:21 浏览: 40
这个错误是由于 MySQL 8.0 默认使用了 caching_sha2_password 插件,而该插件需要使用 SSL/TLS 加密连接。
你可以尝试以下解决方法:
1. 在连接字符串中添加 `&allowPublicKeyRetrieval=true` 参数,例如:
```python
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase",
allow_public_key_retrieval=True
)
```
2. 更改 MySQL 用户的加密方式,使用 mysql_native_password 插件。可以通过以下 SQL 命令更改用户的加密方式:
```sql
ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
```
3. 更改 MySQL 配置文件 my.cnf,添加以下内容:
```ini
[mysqld]
default_authentication_plugin=mysql_native_password
```
然后重启 MySQL 服务。
希望这些方法可以帮到你。
相关问题
连接docker配置的mysql8.0 报错Public Key Retrieval is not allowed
当你连接 Docker 配置的 MySQL 8.0 数据库时,遇到 "Public Key Retrieval is not allowed" 错误,这是因为 MySQL 8.0 默认不允许不安全的连接。你可以尝试以下解决方法:
1. 在连接 MySQL 时,使用 `--ssl-mode` 参数设置为 `DISABLED`,禁用 SSL 连接。例如:
```
mysql -u root -p --ssl-mode=DISABLED
```
2. 如果你使用的是 MySQL 客户端工具(如 MySQL Workbench),可以在连接配置中将 SSL 模式设置为 "Disabled"。
3. 如果你想启用 SSL 连接,请执行以下步骤:
- 首先,进入 MySQL 容器的终端或命令行:
```
docker exec -it mysql-container bash
```
- 然后,进入 MySQL 控制台:
```
mysql -u root -p
```
- 在 MySQL 控制台中,执行以下命令禁用 SSL 模式:
```
SET GLOBAL require_secure_transport=OFF;
```
- 最后,退出 MySQL 控制台并重启 MySQL 容器:
```
exit
docker restart mysql-container
```
重启后,尝试连接到 MySQL 数据库,应该不再报 "Public Key Retrieval is not allowed" 错误。
请注意,禁用 SSL 连接可能会降低数据传输的安全性。如果需要使用安全的连接,请配置正确的 SSL 证书和密钥,并使用正确的 SSL 配置。
DBeaver连接mysql报Public Key Retrieval is not allowed错误
当使用DBeaver连接MySQL时,可能会出现“Public Key Retrieval is not allowed”的错误提示。解决此问题的方法是在驱动属性中将“allowPublicKeyRetrieval”设置为true。具体步骤如下:
1.右键单击连接不上的数据库,选择“编辑连接”(或使用快捷键F4)。
2.点击“驱动属性”。
3.将“allowPublicKeyRetrieval”设置为true。
设置完成后,再次测试连接到MySQL即可连接成功。