MySQL8报Public Key Retrieval is not allowed 上次修改发生在1月28日09:51
时间: 2023-08-27 12:17:07 浏览: 216
### 回答1:
这个错误通常是由于MySQL8的默认身份验证插件已更改为caching_sha2_password所导致的。该插件要求使用SSL连接并且不允许从服务器获取公钥。
要解决此问题,您可以尝试以下几种方法:
1. 更改MySQL用户的身份验证插件为mysql_native_password
您可以使用以下命令更改MySQL用户的身份验证插件:
```
ALTER USER 'your_username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
```
这将更改身份验证插件为mysql_native_password,并且应该允许您连接到MySQL服务器。
2. 在连接字符串中指定允许PublicKeyRetrieval
在连接MySQL服务器时,您可以在连接字符串中指定允许PublicKeyRetrieval:
```
jdbc:mysql://localhost:3306/dbname?allowPublicKeyRetrieval=true&useSSL=false
```
3. 将MySQL服务器配置为允许公钥检索
您可以在MySQL服务器的配置文件my.cnf中设置以下选项:
```
[mysqld]
...
default_authentication_plugin=mysql_native_password
...
```
这将将默认身份验证插件更改为mysql_native_password,并且应该允许公钥检索。
注意:如果您更改了MySQL用户的身份验证插件或服务器的默认身份验证插件,则可能需要重新启动MySQL服务器才能使更改生效。
### 回答2:
MySQL8报Public Key Retrieval is not allowed这个错误通常是由于MySQL8的更改引起的。在MySQL8中,不再支持通过旧的密码验证协议进行远程连接。这意味着在连接到MySQL8数据库时,不再允许从服务器检索公钥。
要解决此问题,您可以尝试以下方法:
1. 使用新的密码验证协议进行连接:在连接到MySQL8数据库时,您需要使用新的密码验证协议。可以通过在连接字符串(connection string)中指定“useSSL=false”来禁用SSL连接,或者使用新的SSL配置文件进行连接。
2. 更新MySQL JDBC驱动程序:如果您使用的是MySQL JDBC驱动程序进行连接,可能需要更新到最新的版本。最新的驱动程序通常会修复一些已知的问题和错误。
3. 检查MySQL服务器的配置:确保MySQL服务器的配置正确。如果配置文件中禁用了公钥检索功能,则可能需要启用它。您可以查阅MySQL的官方文档或向系统管理员寻求帮助。
尽管上面的方法可能会解决问题,但如果出现其他问题或错误,最好还是参考MySQL的官方文档或寻求专业人士的帮助。
### 回答3:
MySQL8报错"Public Key Retrieval is not allowed"的原因是由于MySQL8的新特性中启用了Caching SHA-2 Pluggable Authentication(Caching SHA-2可插拔身份验证),该特性要求在连接数据库时进行公钥检索,而默认情况下,MySQL Server未开启公钥插件与客户端进行认证所需的功能。
解决该问题的方法是修改MySQL配置文件my.cnf,在[mysqld]部分添加或修改以下行:
```
[mysqld]
…
default_authentication_plugin=mysql_native_password
…
```
然后重启MySQL服务,该错误应该就会解决。
另外,也可以通过更改mysql用户的认证插件来解决问题。首先,以root用户连接到MySQL数据库,然后运行以下命令:
```
ALTER USER 'mysql用户名'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
```
请将"mysql用户名"替换为您要更改的实际用户名,将"密码"替换为用户的实际密码。运行该命令后,再次尝试连接数据库,应该能够成功连接,而不再报错。
这些解决方法适用于大多数情况,但如果问题仍然存在,可能需要查看MySQL的错误日志文件以获取更多详细信息,并可能需要根据具体情况进行其他操作。
阅读全文