JDBC连接MySQL 8.0.12时报错:MySQLNonTransientConnectionException: Public Key Retrieval is not allowed

【声明:】本文是作者(蘑菇v5)原创,版权归作者 蘑菇v5所有,侵权必究。本文首发在。如若转发,请注明作者和来源地址!未经授权,严禁私自转载!

问题:

重启本地服务器时,报错MySQLNonTransientConnectionException: Public Key Retrieval is not allowed,无法获取对数据源的JDBC连接。

解决过程

通过百度,猜测原因如下:

1、mysql5及之前的版本使用的是旧版驱动 "com.mysql.jdbc.Driver"mysql6以及之后的版本需要更新到新版驱动,对应的Driver"com.mysql.cj.jdbc.Driver",但是这个驱动错误的信息是"Loading classcom.mysql.jdbc.Driver'. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary",排除这个原因
2、连接数据库的url中,加上allowPublicKeyRetrieval=true参数,经过验证解决问题
3、网上看到另外的解决 办法,修改default_authentication_plugin设置,在my.ini中增加[mysqld]default_authentication_plugin=mysql_native_password,然后mysql命令行执行ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';最后在url中添加时区参数serverTimezone=Asia/Shanghai

你可能感兴趣的:(JDBC连接MySQL 8.0.12时报错:MySQLNonTransientConnectionException: Public Key Retrieval is not allowed)