Public Key Retrieval is not allowed出现原因以及解决方法
·
昨天本地还好好的服务,今天就突然起不来了,查看服务器日志报出以上问题
这是在连接mysql8.0版本的时候出现的问题,但是这个错误并不是总是出现,好像具有偶然性,昨天一切还正常的服务,今天就出现这个问题
一、问题出现的原因
- 当禁用SSL/TLS协议传输之后,客户端会使用服务器的公钥进行传输,默认情况下客户端不会主动去找服务器拿公钥,进而会出现错误
出现Public Key Retrieval的场景可以概括为:
- 禁用SSL/TLS协议传输且当前用户在服务器端没有登录缓存的情况下,客户端没有办法拿到服务器的公钥:
- 新建数据库用户,首次登录
- 数据库的用户名,密码发生改变之后登录
- 服务器端调用FLUSH PRIVELEGRS指令刷新服务器缓存
二、解决方法
- 在条件允许的情况下,不要禁用SSL/TLS协议,即不要在CLI客户端使用 '--ssl-mode=disabled'或者JDBC连接串中加入useSSL=false
- 如果必须禁用SSL/TLS协议,尝试使用CLI客户端登录一次MySQL数据库制造登录缓存
三、可以通过增加如下参数允许客户端获得服务器的公钥
- 在JDBC连接串中加入allowPublicKeyRetrieval=true参数
- 在CLI客户端连接时候加入'-get-server-public-key'参数
- 在CLI客户端连接时候加入'-server-public-key-path=file_name'参数,指定存放在本地的公钥文件
更多推荐
已为社区贡献3条内容
所有评论(0)