JDBC_MySQL8.0.13_连接测试

前言

手贱把MySQL升级到了8.0.13,在IntelliJ IDEA中测试连接不上。因此记录一下,供个人以后参考。

系统环境

  1. win10x64
  2. jkd11
  3. IDEA
  4. MySQL 8.10.13 Community

Jar包

mysql-connector-java-8.0.14.jar

升级到最新的吧,目前最新是8.0.14

[下载地址](https://dev.mysql.com/downloads/connector/j/

选择Platform Independent就有下载地址,可以点不注册

测试连接

package cn.wahll.test;

import java.sql.DriverManager;
import java.sql.SQLException;

public class jdbcDemo {
    /* jdbc:mysql://localhost:3306/库名?useSSL=false&serverTimezone=UTC
     * useSSL=false在最新版的sql需要验证,然而并没有,需要设定
     * serverTimezone=UTC一个时区的设定
     */
    private static String url = "jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC";
    /*注意driver改了,多了 .cj */
    private static String driver = "com.mysql.cj.jdbc.Driver";
    /*用户名和密码*/
    private static String username = "root";
    private static String password = "root";

    public static void main(String[] args) throws Exception {
        //反射的一个过时方法,不过比较简单,不要介意,以后也是用连接池来做的
        Class.forName(driver).newInstance();
        System.out.println(DriverManager.getConnection(url, username, password));
    }
}

常见错误及解决方式

WARN: Establishing SSL connection without server's identity verification is not recommended.

在较高版本的 Mysql 中,引入了 SSL 安全认证,需要拥有一定的安全证书去连接数据库,而我们没有证书,所以出现此警告。

解决方式:在原数据库 url 后加上禁用 SSL 的信息

private static String url = "jdbc:mysql://localhost:3306/你的库名?useSSL=false";

The new driver class is `com.mysql.cj.jdbc.Driver'

解决驱动类路径问题 , 较新版本的驱动类的包结构发生了改变,全限定名变为 com.mysql.cj.jdbc.Driver

private static String driver = "com.mysql.cj.jdbc.Driver";

The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone.

就是要设置一个时区 , 不知道为什么 , 反正就是要设置啦

要在原 url 后附加 serverTimezone=UTC

private static String url = "jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC";

猜你喜欢

转载自www.cnblogs.com/richardwlee/p/10304484.html