📜  mysql Public Key Retrieval is not allowed (1)

📅  最后修改于: 2023-12-03 15:17:46.097000             🧑  作者: Mango

MySQL Public Key Retrieval is not allowed

简介

MySQL Public Key Retrieval is not allowed是一个MySQL连接错误,通常发生在MySQL用户尝试通过TLS协议连接到MySQL服务器时。错误提示为“Public Key Retrieval is not allowed”,这意味着MySQL客户端试图从服务器中检索SSL证书,但服务器禁止这样的行为。

原因

通常情况下,MySQL服务器会储存SSL证书以加密敏感数据的传输。客户端连接时,MySQL服务器会通过向客户端发送SSL证书,使客户端能够在连接密钥协商期间验证服务器的身份。然而,在某些情况下,MySQL服务器可能配置为禁止从服务器检索SSL证书,这可能会导致mysql Public Key Retrieval is not allowed错误。

解决方案

解决mysql Public Key Retrieval is not allowed错误的方法有以下几种:

1. 更改连接方式

为解决此错误,用户可以通过修改MySQL连接方式,将其更改为基于密钥文件的连接方式。这将使连接不必从MySQL服务器检索SSL证书。

可以在MySQL命令行或cnf文件中添加以下内容,以实现基于密钥文件的连接方式:

[client]
ssl-key=/path/to/client-key.pem
ssl-cert=/path/to/client-cert.pem
ssl-ca=/path/to/ca-cert.pem

其中:

  • ssl-key: 客户端密钥文件(.pem格式)路径
  • ssl-cert: 客户端证书(.pem格式)路径
  • ssl-ca: 受信任的证书授权机构CA证书链(.pem格式)路径
2. 允许Public Key检索

在MySQL服务器上修改my.cnf文件可启用Public Key检索。可以按以下方式进行编辑:

[mysqld]
…
ssl-ca=/path/to/ca-cert.pem
require_secure_transport=ON

其中:

  • ssl-ca: 受信任的证书授权机构CA证书链(.pem格式)路径
  • require_secure_transport: 启用强制TLS连接。

这将允许客户端检索MySQL服务器上的SSL证书。

3. 使用非TLS连接

如果无法更改MySQL连接方式或允许Public Key检索,则可以考虑使用不使用SSL证书的非TLS连接。

MySQL客户端可以在不使用SSL证书的情况下连接MySQL服务器。可以通过将“--ssl-mode = DISBALE”添加到mysql命令行或使用以下配置关闭SSL连接:

[client]
ssl-mode=DISABLED

这将禁用MySQL客户端的SSL连接功能。

结论

mysql Public Key Retrieval is not allowed通常发生在MySQL用户尝试通过TLS协议连接到MySQL服务器时。我们可以通过更改连接方式或在MySQL服务器上启用Public Key来解决此错误。如果无法实现,则可以关闭SSL连接或使用不带SSL证书的非TLS连接。