mysql 连接报错Public Key Retrieval is not allowed
时间: 2023-12-15 13:32:54 浏览: 179
当使用MySQL 8.0及以上版本时,连接MySQL数据库时可能会出现“Public Key Retrieval is not allowed”错误。这是因为MySQL 8.0默认情况下不允许使用公钥检索,需要手动更改MySQL配置文件以允许公钥检索。以下是两种解决方法:
1.在连接MySQL时添加allowPublicKeyRetrieval参数并将其设置为true,例如:
```python
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase",
allowPublicKeyRetrieval=True # 添加该参数并设置为True
)
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM customers")
myresult = mycursor.fetchall()
for x in myresult:
print(x)
```
2.修改MySQL配置文件my.cnf或my.ini,在[mysqld]下添加一行参数:
```shell
[mysqld]
...
...
# 添加以下参数
allow_public_key_retrieval = on
```
修改完成后,重启MySQL服务即可。
相关问题
连接mysql报错 Public Key Retrieval is not allowed
"Public Key Retrieval is not allowed" 这个错误通常在连接MySQL时出现,它是由于密码传输过程中必须使用TLS协议保护,但客户端无法获取服务器的公钥所致。为了解决这个问题,你可以通过以下两种方法之一来解决:
1. 在连接中指定服务器的RSA公钥:
在连接MySQL时,通过在连接字符串中设置ServerRSAPublicKeyFile参数,指定服务器的RSA公钥文件路径。这样客户端就能正确获取到服务器的公钥,从而解决问题。
2. 允许客户端从服务器获取公钥:
在连接MySQL时,可以设置AllowPublicKeyRetrieval=True参数,允许客户端从服务器获取公钥。这样客户端就能正确获取到服务器的公钥,从而解决问题。
请根据你的具体情况选择其中一种方法来解决问题。如果你无法确定服务器的RSA公钥文件路径,或者无法修改连接字符串,你可以尝试联系MySQL管理员或技术支持人员寻求帮助。
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 中使用。
阅读全文