Java连接MySQL8.0以上版本数据库方式,将驱动改成新版本的解决办法 前言:本人因用mysql 8和驱动5导致数据库的某些功能失效,打算将驱动改成8的,因此找的一篇文章,此文章完美的解决了我的问题,在此分享?

MySQL 8.0 开始数据库相比常用的 5.X 版本发生了比较大的变化,我们在连接数据库的过程中许多地方也要发生一些变化。

总结一下,想要利用 mysql-connector-java 与 MySQL 8.X 版本建立连接,有以下四个方面与 MySQL 5.X 版本相比发生了变化。

1、MySQL 8.0 以上版本驱动包版本 mysql-connector-java-8.X.jar

  MySQL 版本和 mysql-connector-java 版本对应关系如下,MySQL官方也是推荐使用 mysql-connector-java-8.X.jar 去连接 MySQL 8.0 的版本

Connector/J versionDriver TypeJDBC versionMySQL Server versionStatus
5.143.0, 4.0, 4.1, 4.25.6*, 5.7*, 8.0*General availability
8.044.25.6, 5.7, 8.0General availability. Recommended version

  

2、com.mysql.jdbc.Driver 更换为 com.mysql.cj.jdbc.Driver。

3、MySQL 8.0 以上版本不需要建立 SSL 连接的,需要显式关闭。

  MySQL 5.7 之前版本,安全性做的并不够好,比如安装时生成的root空密码账号、存在任何用户都能连接上的 test 库等,导致数据库存在较大的安全隐患。从5.7版本开始MySQL官方对这些问题逐步进行了修复,到了 MySQL 8.0 以上版本已经不需要使用 SSL 进行连接加密了。但是高版本仍然保留了这个接口,所以需要在连接的时候手动写明是否需要进行 SSL 连接,这里我们手动关闭 SSL 连接加密就OK。

useSSL=false

4、最后还需要设置 CST。也就是设置时区。

 

 serverTimezone=UTC
例子
1 Class.forName("com.mysql.cj.jdbc.Driver");
2 conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test_demo?useSSL=false&serverTimezone=UTC","root","password");
.xml配置:"jdbc:mysql://localhost:3306/mybatis?useSSL=true&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8"

作者:JYRoy

出处:https://www.cnblogs.com/jyroy/p/11276152.html

MySQL 8.0 开始数据库相比常用的 5.X 版本发生了比较大的变化,我们在连接数据库的过程中许多地方也要发生一些变化。

总结一下,想要利用 mysql-connector-java 与 MySQL 8.X 版本建立连接,有以下四个方面与 MySQL 5.X 版本相比发生了变化。

1、MySQL 8.0 以上版本驱动包版本 mysql-connector-java-8.X.jar

  MySQL 版本和 mysql-connector-java 版本对应关系如下,MySQL官方也是推荐使用 mysql-connector-java-8.X.jar 去连接 MySQL 8.0 的版本

Connector/J versionDriver TypeJDBC versionMySQL Server versionStatus
5.143.0, 4.0, 4.1, 4.25.6*, 5.7*, 8.0*General availability
8.044.25.6, 5.7, 8.0General availability. Recommended version

  

2、com.mysql.jdbc.Driver 更换为 com.mysql.cj.jdbc.Driver。

3、MySQL 8.0 以上版本不需要建立 SSL 连接的,需要显式关闭。

  MySQL 5.7 之前版本,安全性做的并不够好,比如安装时生成的root空密码账号、存在任何用户都能连接上的 test 库等,导致数据库存在较大的安全隐患。从5.7版本开始MySQL官方对这些问题逐步进行了修复,到了 MySQL 8.0 以上版本已经不需要使用 SSL 进行连接加密了。但是高版本仍然保留了这个接口,所以需要在连接的时候手动写明是否需要进行 SSL 连接,这里我们手动关闭 SSL 连接加密就OK。

useSSL=false

4、最后还需要设置 CST。也就是设置时区。

 

 serverTimezone=UTC
例子
1 Class.forName("com.mysql.cj.jdbc.Driver");
2 conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test_demo?useSSL=false&serverTimezone=UTC","root","password");
.xml配置:"jdbc:mysql://localhost:3306/mybatis?useSSL=true&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8"