"Public Key Retrieval is not allowed"表示不允许检索公钥。在MySQL连接过程中,如果用户账号使用sha256_password认证,传输过程中必须保护密码。TLS是首选的加密机制,但如果不可用,则会使用RSA公钥加密。要指定服务器的RSA公钥,可以使用ServerRSAPublicKeyFile连接字符串设置,或将AllowPublicKeyRetrieval设置为True以允许客户端自动从服务器请求公钥。需要注意的是,设置AllowPublicKeyRetrieval为True可能会允许恶意代理执行中间人攻击以获取明文密码,因此在默认情况下是False,必须显式启用它。
遇到这种情况有两种解决方法:
方法一:
- 使用DBeaver数据库客户端连接数据库
- 右键点击数据库连接,选择"编辑连接"。
- 在弹出的窗口中,点击"驱动属性"。
- 将"allowPublicKeyRetrieval"设置为true。
- 确认修改后保存,重新连接数据库。
方法二:
在配置MySQL的URL时,也可以在URL中增加"&allowPublicKeyRetrieval=true"来启用公钥检索,如下:
url: jdbc:mysql://localhost:3306/mall?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true