Public Key Retrieval is not allowed
1.报错
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed
2.原因:
https://mysqlconnector.net/connection-options/
如果用户帐号使用sha256_password认证方式,在传输过程中必须保护密码; TLS是这方面的首选机制,但如果它不可用,那么将使用RSA公钥加密。 如果需要指定服务器的RSA公钥,可以通过设置ServerRSAPublicKeyFile连接字符串,或者设置AllowPublicKeyRetrieval=True,允许客户端自动向服务器请求公钥。 请注意,AllowPublicKeyRetrieval=True可能允许恶意代理执行MITM攻击来获取明文密码,因此默认情况下它是False,必须显式启用。
3.解决方法:
最简单的解决方法是修改url,在后面加&allowPublicKeyRetrieval=true
具体如下
spring.datasource.url=jdbc:mysql://localhost:3306/community?characterEncoding=utf-8&useSSL=false&serverTimezone=Hongkong&allowPublicKeyRetrieval=true
4.其他
在一段时间之后想复原该报错进行截图记录,可发现将&allowPublicKeyRetrieval=true删除后,代码却能正常运行没有报错,不知什么原因,还是没理解了.