java - error - usessl true




連接到MySQL數據庫時有關SSL連接的警告 (8)

在下面的兩個類中,我嘗試連接到MySQL數據庫。 但是,我總是會收到此錯誤:

2015年12月09日星期三22:46:52警告:不建議在沒有服務器身份驗證的情況下建立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();
            }
        }
    }
}

一種替代方法是:

Properties properties = new Properties();
properties.setProperty("user", "root");
properties.setProperty("password", "milos23);
properties.setProperty("useSSL", "false");
properties.setProperty("autoReconnect", "true");

try (Connection conn = DriverManager.getConnection(connectionUrl, properties)) {
...
} catch (SQLException e) {
...
}

雖然,我認為不需要自動重新連接設置即可刪除警告。


像這樣提到 url

jdbc:mysql://hostname:3306/hibernatedb?autoReconnect=true&useSSL=false

但是在xml配置中,當您提及 簽名時,IDE將顯示以下錯誤:

The reference to entity "useSSL" must end with the ';' delimiter.

然後必須明確使用 & 而不是 & ,然後在 xml 中將其確定為 & ,然後在 xml 中將其指定為url,如下所示:

<property name="connection.url">jdbc:mysql://hostname:3306/hibernatedb?autoReconnect=true&amp;useSSL=false</property>

您的連接網址應如下所示,

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

這將禁用SSL並抑制SSL錯誤。


您需要像這樣使用您的mysql路徑:

connectionString = "jdbc:mysql://{server-name}:3306/%s?useUnicode=yes&characterEncoding=UTF-8&useSSL=false"

我將此屬性用於config xml中的休眠狀態

<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/bookshop?serverTimezone=UTC&amp;useSSL=false
</property>

沒有 -serverTimezone = UTC- 它不起作用



與MySQL建立連接時,用它來解決蜂巢中的問題

<property>
   <name>javax.jdo.option.ConnectionURL</name>
   <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true&amp;autoReconnect=true&amp;useSSL=false</value>
   <description>metadata is stored in a MySQL server</description>
</property>

解決方案要解決此問題,請在MySQL連接字符串的末尾附加useSSL = false:

例如

application.properties

mysql數據源

spring.datasource.url=jdbc:mysql://localhost/dbname?useSSL=false
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver