Подтвердить что ты не робот

Предупреждение о соединении SSL при подключении к базе данных MySQL

С двумя нижеприведенными классами я попытался подключиться к базе данных 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". Вам нужно либо явно отключить SSL, установив useSSL = false, либо установить 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();
            }
        }
    }
}
4b9b3361

Ответ 1

Ваш URL-адрес подключения должен выглядеть следующим образом:

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

Это отключит SSL и также устранит ошибки SSL.

Ответ 2

Как использовать SSL, но отключая проверку сервера (например, в режиме разработки на вашем собственном компьютере):

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

Ответ 3

укажите 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 в xml-конфигурации следующим образом:

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

Ответ 4

Альтернативный метод:

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

Хотя, я не думаю, что настройка автоматического повторного подключения необходима, чтобы удалить предупреждение.

Ответ 5

Я также нашел это предупреждение, затем исправил его с помощью суффикса SSL = false к строке подключения, как в примере кода.

Пример:

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

Ответ 6

вам нужно указать свой путь mysql следующим образом:

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

Ответ 7

Используйте это, чтобы решить проблему в улье при подключении к 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>

Ответ 8

Это было хорошо для меня:

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

Ответ 9

Я использую это свойство для спящего режима в конфигурации XML

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

без - serverTimezone = UTC - это не работает

Ответ 10

новые версии mysql-коннектора устанавливают SSL-соединение по умолчанию... для его решения:

Загрузите старую версию mysql-коннектора, например mysql-connector-java-5.0.8.zip

. , или , , Загрузите OpenSSL для Windows и следуйте инструкциям по его установке

Ответ 11

Решение Чтобы исправить это, добавьте useSSL = false в конце строки подключения MySQL:

ех.

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

Ответ 12

Поскольку я в настоящее время нахожусь в режиме разработки, я установил для useSSL значение "Нет" не в tomcat, а в конфигурациях сервера mysql. Пошел в Управление настройками доступа\Управление подключениями к серверу из рабочей среды → Выбрал мое соединение. Внутри вкладки подключения перешли на вкладку SSL и отключили настройки. Работал на меня.