在学习SSM的mybatis框架时,连接数据库出现了以下报错:
Client does not support authentication protocol requested by server; consider upgrading MySQL client
即:客户端不支持服务器请求的身份验证协议;考虑升级MySQL客户端
首先进入了mysql insatller community搞了一下跟新,在经过一个多小时的更新操作后,发现数据库还是连接不上
我看了一下我的xml文件的配置:
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/baidu/>
<property name="username" value="root" />
<property name="password" value="password" />
我的mysql是8.0版本,发现驱动不满足当前版本,跟改为:
继续运行程序,就可以正常连接,读取数据了
第二种情况
在使用spring整合jdbc时,连接池如下(mysql8.0)
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass("com.mysql.cj.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/spring_day3?serverTimezone=UTC");
dataSource.setUser("root");
dataSource.setPassword("jzb19981128");
之前在学习mybatis框架时使用了jdbcUrl(后跟了一系列)可以正常连接,但是在这里一致报错
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection;
nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database!
无法获取JDBC连接;嵌套异常为java.sql.SQLException异常:无法从基础数据库获取连接!
经过各种百度,文章的查找,终于发现是jdbcUrl后缀出现的问题,将其改成下面这样子就可以正常连接数据库
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/spring_day3?useSSL=false&serverTimezone=GMT" +"&allowPublicKeyRetrieval=true");
发现是serverTimezone的问题