java连接mysql数据库8.0以上版本过程中遇到的坑

Posted sunseeker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java连接mysql数据库8.0以上版本过程中遇到的坑相关的知识,希望对你有一定的参考价值。

来自:https://blog.csdn.net/u013276277/article/details/80255468

   首先,我居然不能用navicat客户端连接上mysql8.0数据库报1251错误,这个的解决方式已经在我的上一篇博客中解决了。然后我又遇到了java无法连接mysql数据库8.0的问题。

报错:Loading class `com.mysql.jdbc.Driver‘. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver‘. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

Wed May 09 16:25:23 CST 2018 WARN: Establishing SSL connection without server‘s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn‘t set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false‘. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

    上面这段报错中加粗的文字很重要,她告诉你mysql8.0和之前版本的区别,首先驱动换了,不是com.mysql.jdbc.Driver而是‘com.mysql.cj.jdbc.Driver‘,此外mysql8.0是不需要建立ssl连接的,你需要显示关闭。最后你需要设置CST。所以我们需要在之前我们熟悉的java连接数据库代码的基础之上改动以下两行代码:

            Class.forName("com.mysql.cj.jdbc.Driver");
//          Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test_demo?useSSL=false&serverTimezone=UTC","root","password");
//            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test_demo","root","password");

改动完了之后你就可以成功连上mysql数据库数据库8.0了。

以上是关于java连接mysql数据库8.0以上版本过程中遇到的坑的主要内容,如果未能解决你的问题,请参考以下文章

Navicat 连接Mysql 8.0以上版本报错1251的详细解决方案

MySQL专题一:安装与连接

JAVA操作数据库CURD——MySQL篇

Mysql数据库 | 基于Docker搭建Mysql-8.0以上版本主从实例实战

MySQL8.0以上版本创建用户并授权远程连接

Mysql连接驱动8.0版本改动