连接到 MySQL 数据库时有关 SSL 连接的警告

通过下面的两个类,我尝试连接到MySQL数据库。但是,我总是得到这个错误:

星期三 十二月 09 22:46:52 CET 2015 警告: 不建议在没有服务器身份验证的情况下建立 SSL 连接。根据MySQL 5.5.45 +,5.6.26 +和5.7.6 +要求,如果未设置显式选项,则必须默认建立SSL连接。为了符合不使用 SSL 的现有应用程序,verifyServerCertificate 属性设置为“false”。您需要通过设置 useSSL=false 来显式禁用 SSL,或者设置 useSSL=true 并提供用于服务器证书验证的信任库。

这是具有以下方法的测试类:main

public class TestDatabase {

    public static void main(String[] args) {
        Database db = new Database();
        try {
            db.connect();
        } catch (Exception e) {
            e.printStackTrace();
        }
        db.close();
    }
}

这是类:Database

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

public class Database {

    private Connection con;

    public void connect() throws Exception{

        if(con != null) return;

        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            throw new Exception("No database");
        }

        String connectionURL = "jdbc:mysql://localhost:3306/Peoples";

        con = DriverManager.getConnection(connectionURL, "root", "milos23");        
    }

    public void close(){
        if(con != null){
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

答案 1

您的连接 URL 应如下所示,

jdbc:mysql://localhost:3306/Peoples?autoReconnect=true&useSSL=false

这将禁用 SSL 并禁止 SSL 错误。


答案 2

使用 SSL 但关闭服务器验证(例如,在您自己的计算机上处于开发模式时),情况如何:

jdbc:mysql://localhost:3306/Peoples?verifyServerCertificate=false&useSSL=true