mysql 连接报错Public Key Retrieval is not allowed
时间: 2023-12-15 08:32:54 浏览: 43
当使用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管理员或技术支持人员寻求帮助。
DBeaver连接mysql8.0报错Public Key Retrieval is not allowed
DBeaver连接mysql8.0报错Public Key Retrieval is not allowed是由于MySQL 8.0默认启用了caching_sha2_password插件,而DBeaver默认使用mysql-connector-java 5.x版本,该版本不支持caching_sha2_password插件。解决方法如下:
1.升级mysql-connector-java到8.x版本。
2.在MySQL 8.0中创建一个新用户并授权,使用该用户连接MySQL。
3.修改MySQL 8.0的加密方式为mysql_native_password。可以通过以下命令修改:
ALTER USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
其中,user为你的用户名,localhost为你的主机名,password为你的密码。