## 如何使用java连接MySQL8.0以上版本的问题
**问题描述:**
最近在使用java连接数据库的时候一直出现碰到no suitable driver found for jdbc:mysql//localhost:3306/qzhao 错误
于是我进行了一系列的百度,我将这些解决方案罗列一下
一:连接URL格式出现了问题(Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/XX","root","XXXX")
二:驱动字符串出错(com.mysql.jdbc.Driver)
三:Classpath中没有加入合适的mysql_jdbc驱动(驱动要和你的数据库版本一致)
四:驱动jar包放的位置不对
从这里我也发现了我的问题原来是:驱动要和数据库版本一致。
**我使用的是MySQL8.0,下面我来介绍一下数据库8.0与之前版本使用上的不同**
**1、MySQL 8.0 以上版本驱动包版本 mysql-connector-java-8.X.jar**
注意:一定要是用mysql-connector-java-8.X.jar及以上版本的驱动包
**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
例子:`// Connection conn = DriverManager.getConnection(" jdbc:mysql://localhost:3306/test", "root", "root");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC", "root", "password");`
这里的“root”和“password”是你的root账号和密码