JDBC连接MySQL 8.0.12时报错:MySQLNonTr
【声明:】本文是作者(蘑菇v5)原创,版权归作者 蘑菇v5所有,侵权必究。本文首发在简书。如若转发,请注明作者和来源地址!未经授权,严禁私自转载!
问题:
重启本地服务器时,报错MySQLNonTransientConnectionException: Public Key Retrieval is not allowed
,无法获取对数据源的JDBC
连接。
解决过程
通过百度,猜测原因如下:
1、mysql5
及之前的版本使用的是旧版驱动 "com.mysql.jdbc.Driver"
,mysql6
以及之后的版本需要更新到新版驱动,对应的Driver
是"com.mysql.cj.jdbc.Driver"
,但是这个驱动错误的信息是"Loading class
com.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
。