MySQL8报错:Public Key Retrieval is not allowed
时间: 2023-10-30 13:05:28 浏览: 75
这个错误通常是由于 MySQL 8 默认禁用了公钥检索所导致的。在 MySQL 8 中,默认情况下,连接 MySQL 数据库时不允许使用公钥检索来验证身份。
要解决这个问题,你可以尝试以下方法之一:
1. 在连接 URL 中添加 `allowPublicKeyRetrieval=true` 参数。例如:
```
jdbc:mysql://hostname:port/database?allowPublicKeyRetrieval=true
```
2. 修改 MySQL 8 的配置文件 `my.cnf` 或 `my.ini`,将 `mysql_native_password` 改为 `caching_sha2_password`。打开配置文件,在 `[mysqld]` 部分添加或修改以下行:
```
default_authentication_plugin=caching_sha2_password
```
然后重启 MySQL 服务。
希望这些方法可以帮助你解决问题。如果还有其他疑问,请随时提问。
相关问题
报错:Public Key Retrieval is not allowed
报错:"Public Key Retrieval is not allowed"是由于禁用了SSL/TLS协议传输导致的。在禁用SSL/TLS协议传输的情况下,客户端无法主动获取服务器的公钥,从而引发了该错误。这种情况通常发生在以下场景下:新建数据库用户首次登录、数据库用户名密码发生改变后登录、服务器端刷新缓存。解决该错误可以采取以下方案:
1. 在条件允许的情况下,不要禁用SSL/TLS协议,即不要在CLI客户端使用--ssl-mode=disabled或在JDBC连接串中加入useSSL=false参数。
2. 如果必须禁用SSL/TLS协议,可以尝试使用CLI客户端登录一次MySQL数据库制造登录缓存。
3. 在JDBC连接串中加入allowPublicKeyRetrieval=true参数,允许客户端获取服务器的公钥。
4. 在CLI客户端连接时加入--get-server-public-key参数,指定从服务器获取公钥。
5. 在CLI客户端连接时加入--server-public-key-path=file_name参数,指定存放在本地的公钥文件。
需要注意的是,启用AllowPublicKeyRetrieval=True可能会存在安全风险,因为恶意代理可能执行中间人攻击以获取明文密码。因此,默认情况下AllowPublicKeyRetrieval为False,必须显式启用。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [MySQL 8.0 Public Key Retrieval is not allowed 错误的原因及解决方法](https://blog.csdn.net/u011447905/article/details/121441165)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* [Public Key Retrieval is not allowed解决](https://blog.csdn.net/weixin_55599565/article/details/125140094)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
canal-admin启动报错:Public Key Retrieval is not allowed
这个问题是由于MySQL 8.0版本默认禁用了public key的检索,而canal-admin使用的是MySQL 8.0版本以上的驱动,所以会出现这个问题。解决方法如下:
1.在MySQL 8.0版本以上的数据库中,执行以下命令开启public key检索:
```sql
set global allow_public_key_retrieval=1;
```
2.在canal-admin的启动脚本中添加以下JVM参数:
```shell
-Dspring.datasource.url=jdbc:mysql://ip:port/canal_admin?useSSL=false&allowPublicKeyRetrieval=true
```
其中ip和port分别为MySQL数据库的IP地址和端口号。
3.重启canal-admin即可。