在连接MySQL数据库时警告SSL连接

时间:2022-10-02 21:31:23

With the two classes below, I've tried connect to a MySQL database. However, I always get this error:

在下面的两个类中,我尝试连接到一个MySQL数据库。然而,我总是会犯这样的错误:

Wed Dec 09 22:46:52 CET 2015 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.

This is the test class with the main method:

这是测试类的主要方法:

public class TestDatabase {

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

This is the Database class:

这是数据库类:

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();
            }
        }
    }
}

9 个解决方案

#1


403  

Your connection URL should look like the below,

您的连接URL应该如下所示,

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

This will disable SSL and also suppress the SSL errors.

这将禁用SSL,并抑制SSL错误。

#2


82  

How about using SSL but turning off server verification (such as when in development mode on your own computer):

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

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

#3


13  

An alternative method would be:

另一种办法是:

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) {
...
}

Although, I don't think the auto-reconnect setting is needed to remove the warning.

虽然,我认为不需要自动重新连接设置来删除警告。

#4


8  

you need to user your mysql path like this:

你需要像这样使用你的mysql路径:

<property name="url" value="jdbc:mysql://localhost:3306/world?useSSL=true"/>

#5


7  

Use this to solve the problem in hive while making connection with MySQL

在与MySQL连接时,使用此方法解决hive中的问题

<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>

#6


6  

This was OK for me:

这对我来说没问题:

this.conn = (Connection)DriverManager
    .getConnection(url + dbName + "?useSSL=false", userName, password);

#7


4  

mention the url like:

提到网址:

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

but in xml configuration when you mention & sign, the IDE shows below error:

但在xml配置中,当您提到& sign时,IDE显示如下错误:

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

and then you have to explicitly use the &amp; instead of & to be determined as & by xml thereafter in xml you have to give the url in xml configuration like this:

然后你必须明确地使用& &;以后在xml中不能用&来确定,而是用xml配置中的url:

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

#8


3  

I found this warning too then I fixed it by using SSL=false suffix to the connection string like this example code.

我也找到了这个警告,然后我通过使用SSL=false后缀连接字符串,就像这个示例代码一样。

Example:

例子:

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

#9


1  

the new versions of mysql-connector establish SSL connection by default ...to solve it:

新版本的mysql-connector默认建立SSL连接……解决方法:

Download the older version of mysql-connector such as mysql-connector-java-5.0.8.zip

下载旧版本的mysql-connector-java-5.0.8.zip

. . or . . Download OpenSSL for Windows and follow the instructions how to set it

。。或者。。下载Windows的OpenSSL,并遵循如何设置它的说明

#1


403  

Your connection URL should look like the below,

您的连接URL应该如下所示,

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

This will disable SSL and also suppress the SSL errors.

这将禁用SSL,并抑制SSL错误。

#2


82  

How about using SSL but turning off server verification (such as when in development mode on your own computer):

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

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

#3


13  

An alternative method would be:

另一种办法是:

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) {
...
}

Although, I don't think the auto-reconnect setting is needed to remove the warning.

虽然,我认为不需要自动重新连接设置来删除警告。

#4


8  

you need to user your mysql path like this:

你需要像这样使用你的mysql路径:

<property name="url" value="jdbc:mysql://localhost:3306/world?useSSL=true"/>

#5


7  

Use this to solve the problem in hive while making connection with MySQL

在与MySQL连接时,使用此方法解决hive中的问题

<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>

#6


6  

This was OK for me:

这对我来说没问题:

this.conn = (Connection)DriverManager
    .getConnection(url + dbName + "?useSSL=false", userName, password);

#7


4  

mention the url like:

提到网址:

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

but in xml configuration when you mention & sign, the IDE shows below error:

但在xml配置中,当您提到& sign时,IDE显示如下错误:

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

and then you have to explicitly use the &amp; instead of & to be determined as & by xml thereafter in xml you have to give the url in xml configuration like this:

然后你必须明确地使用& &;以后在xml中不能用&来确定,而是用xml配置中的url:

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

#8


3  

I found this warning too then I fixed it by using SSL=false suffix to the connection string like this example code.

我也找到了这个警告,然后我通过使用SSL=false后缀连接字符串,就像这个示例代码一样。

Example:

例子:

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

#9


1  

the new versions of mysql-connector establish SSL connection by default ...to solve it:

新版本的mysql-connector默认建立SSL连接……解决方法:

Download the older version of mysql-connector such as mysql-connector-java-5.0.8.zip

下载旧版本的mysql-connector-java-5.0.8.zip

. . or . . Download OpenSSL for Windows and follow the instructions how to set it

。。或者。。下载Windows的OpenSSL,并遵循如何设置它的说明