Java通过mysql-connector-java-8.0.11连接MySQL Server 8.0遇到的几个问题

Posted doggod

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java通过mysql-connector-java-8.0.11连接MySQL Server 8.0遇到的几个问题相关的知识,希望对你有一定的参考价值。

这次新安装了一个mysql数据库,然后navicat连接数据库一点问题没有。

但是通过Java的jdbc连接却怎么都建立不了连接。

连接MySQL会报错Unable to load authentication plugin ‘caching_sha2_password‘

原因是MySQL在8.0后验证方式由mysql_native_password变为caching_sha2_password,所以连接时会报这个错。

数据库用的是Mysql8版本,但工程里面mysql驱动包却是5.1.37版本。只需修改驱动包为8.0.11版本即可。

而驱动的包也由原来的:mysql-connector-java-5.1.28-bin.jar

换成了:mysql-connector-java-8.0.11.jar。

解决方法:

向项目中导入mysql-connector-java-8.0.11的jar包。

下载地址:https://dev.mysql.com/downloads/file/?id=477058

技术图片

详情请见: 如何向IDEA中导入jar包(●ˇ∀ˇ●)

 

因此Mysql8.0连接JDBC驱动需要注意以下几点:

1,驱动的类换了个名字

Class.forName("com.mysql.cj.jdbc.Driver");

加上useSSL=true或false 

con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useSSL=true", "root", "123456");

加上serverTimezone=GMT

con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useSSL=true&serverTimezone=GMT", "root", "123456");

 

如果是maven引入,则需要由:

<!-- mysql -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.37</version>
</dependency>

改为:

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.11</version>
</dependency>

在mybatis逆向工程里面配置改成如下:

        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://localhost:3306/taobao" userId="root"
            password="aaaaaa">
        </jdbcConnection>

以上是关于Java通过mysql-connector-java-8.0.11连接MySQL Server 8.0遇到的几个问题的主要内容,如果未能解决你的问题,请参考以下文章

安装配置tomcat

java-JDBC.mysql 工具类 读取本地文件配置

JDBC纯驱动方式连接MySQL

将对象传递给java中的方法似乎是通过引用(而Java是通过val)

java如何通过反射获取包中所有的类?

java 通过反射怎么获取方法中参数值