Skip to content

关于MySQL8.0+出现奇奇怪怪的问题

约 248 字小于 1 分钟

2024-11-03

Public Key Retrieval is not allowed

原因

当使用数据库查询第一条数据的时候,发现报了这个Public Key Retrieval is not allowed(不允许检索公钥)。出现这个问题原因是:MySQL8以上版本默认使用 sha256_password 认证,密码在传输过程中必须加密保护,如果无法使用 TLS,就需要使用 RSA 公钥加密

解决

  • 可以在连接字符串中通过 ServerRSAPublicKeyFile 指定服务器的 RSA 公钥。
  • 在URL中设置AllowPublicKeyRetrieval=True参数以允许客户端从服务器获取公钥。(不安全)

(在CMD中登录mysql后却正常了:可能是在命令行中登录MySQL后,MySQL服务器的RSA公钥被缓存到了你的客户端。这样,当程序再次尝试连接数据库时,就可以直接使用已经缓存的公钥,而不需要再去服务器上检索公钥)

贡献者: edge-sky