Failed
[08001] Public Key Retrieval is not allowed
com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed.
查遍百度解决方案 都是URL加上一条allowPublicKeyRetrieval=true,但是又说这样不安全可能遭到MIMT攻击
或者就是先用cmd/navicat连接一下数据库就没事了,但这也不是常事啊
仔细检查URL 发现有一个useSSL=false,觉得会不会公钥和这个ssl关闭有冲突,尝试删掉这个参数后,不在报错,重启不另外连接mysql也不报错了。
?useSSL=false&allowPublicKeyRetrieval=true
MySQL 8.0 以上版本的数据库连接有所不同:
1、MySQL 8.0 以上版本驱动包版本 mysql-connector-java-8.0.16.jar。
2、com.mysql.jdbc.Driver 更换为 com.mysql.cj.jdbc.Driver。
MySQL 8.0 以上版本不需要建立 SSL 连接的,需要显示关闭。
最后还需要设置 CST。
加载驱动与连接数据库方式如下:
Class.forName(“com.mysql.cj.jdbc.Driver”);
conn =DriverManager.getConnection(“jdbc:mysql://localhost:3306/test_demo?useSSL=false&serverTimezone=UTC”,“root”,“password”);
然后当时我就直接拿他的URL来用了。。。
其中useSSL=false
这条应该就是罪魁祸首,具体原因不是很清楚SSL如何加密的,但问题解决了。。