当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《连接到MySQL数据库时有关SSL连接的警告》经验,为你挑选了8个好方法。

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

Wed Dec 09 22:46:52 CET 2015 WARN:不建议在没有服务器身份验证的情况下建立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();
            }
        }
    }
}

小智.. 546

您的连接网址应如下所示,

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

这将禁用SSL并抑制SSL错误.



1> 小智..:

您的连接网址应如下所示,

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

这将禁用SSL并抑制SSL错误.


在jdbc连接字符串中应该不以半冒号结尾
分号的混淆可能是因为在XML配置中你需要将它作为?autoReconnect = true& useSSL = false.否则,解析器认为你有一些奇怪的实体,你必须用';'结束
我在hibernate中遇到了同样的问题但是通过URL解决了这样的问题:`jdbc:mysql:// localhost:3306/Peoples?autoReconnect = true& useSSL = false`我使用**&**而不是**&**
在tomcat上下文文件中jdbc:mysql:// localhost:3306/databaseName?autoReconnect = true; useSSL = false;
禁用SSL听起来不是一个好主意。

2> Peter DeGreg..:

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

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



3> ArifMustafa..:

提到的url样子:

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

但是当您提及&签名时,在xml配置中,IDE会显示以下错误:

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

然后你必须明确地使用&,而不是&被确定为&通过xml其后xml你得给在这样的xml配置的网址:

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



4> Jon..:

另一种方法是:

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

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


没错,不需要`autoReconnect`

5> Khachornchit..:

我也发现了这个警告,然后通过对连接字符串使用SSL = false后缀来修复它,就像这个示例代码一样.

例:

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



6> 小智..:

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




7> KARTHIKEYAN...:

在与MySQL建立连接时使用它来解决配置单元中的问题


   javax.jdo.option.ConnectionURL
   jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true&autoReconnect=true&useSSL=false
   metadata is stored in a MySQL server



8> 小智..:

这对我来说没问题:

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

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有