mysql8.0 Authentication plugin 'caching_sha2_password' cannot be loaded
先来解释一下为什么会报这个错,在mysql8之前的版本使用的密码加密规则是mysql_native_password,但是在mysql8则是caching_sha2_password
。
解决方案有很多,我是创建了一个新用户,并指定加密规则为:mysql_native_password
,这样的话,仅需要执行以下语句即可:
create user 'your username'@'%' identified with mysql_native_password by 'your password
也可以直接修改my配置文件,将默认密码规则设置为mysql_native_password
,刷新权限并重置root密码即可。
default_authentication_plugin=mysql_native_password
如果想用新的caching_sha2_password也是可以的,java的话mysql已经推出了新的mysql-connector-java包,引入后,驱动使用com.mysql.cj.jdbc.driver即可,这个方案本地试了。没有问题。
MySQL8的配置文件my.ini并不是在MySQL的安装目录下,而是:
C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
Caused by: java.sql.SQLException: Unknown system variable 'query_cache_size'
网上查了原因是mysql-connecter-java的版本过低,很显然是数据库驱动程序与数据库版本不对应
解决办法:
如 mybatis使用 mysql-5.1.14的驱动程序,而mybatis配置的数据源连接的是 mysql-8.0.11 ,修改 pom文件即可,如下:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
---------------------
The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone
尝试在代码中做调整
jdbc:mysql://127.0.0.1:3306/onestep?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8