连接mysql8.0报错Public Key Retrieval is not allowed
时间: 2023-11-13 13:58:11 浏览: 45
当连接MySQL8.0时,如果出现Public Key Retrieval is not allowed的错误提示,可以尝试以下两种方法解决:
1. 在连接数据库的配置文件中加上allowPublicKeyRetrieval=true。
2. 将密码方式从默认的caching_sha2_password改为mysql_native_password。这可以通过修改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为你的密码。
mysql 连接报错Public Key Retrieval is not allowed
当使用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服务即可。