Ответ 1
Ваш URL-адрес подключения должен выглядеть следующим образом:
jdbc:mysql://localhost:3306/Peoples?autoReconnect=true&useSSL=false
Это отключит SSL и также устранит ошибки SSL.
С двумя нижеприведенными классами я попытался подключиться к базе данных 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();
}
}
}
}
Ваш URL-адрес подключения должен выглядеть следующим образом:
jdbc:mysql://localhost:3306/Peoples?autoReconnect=true&useSSL=false
Это отключит SSL и также устранит ошибки SSL.
Как использовать SSL, но отключая проверку сервера (например, в режиме разработки на вашем собственном компьютере):
jdbc:mysql://localhost:3306/Peoples?verifyServerCertificate=false&useSSL=true
укажите 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&useSSL=false</property>
Альтернативный метод:
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) {
...
}
Хотя, я не думаю, что настройка автоматического повторного подключения необходима, чтобы удалить предупреждение.
Я также нашел это предупреждение, затем исправил его с помощью суффикса SSL = false к строке подключения, как в примере кода.
Пример:
connectionString = "jdbc:mysql://{server-name}:3306/%s?useUnicode=yes&characterEncoding=UTF-8&useSSL=false"
вам нужно указать свой путь mysql следующим образом:
<property name="url" value="jdbc:mysql://localhost:3306/world?useSSL=true"/>
Используйте это, чтобы решить проблему в улье при подключении к MySQL
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true&autoReconnect=true&useSSL=false</value>
<description>metadata is stored in a MySQL server</description>
</property>
Это было хорошо для меня:
this.conn = (Connection)DriverManager
.getConnection(url + dbName + "?useSSL=false", userName, password);
Я использую это свойство для спящего режима в конфигурации XML
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/bookshop?serverTimezone=UTC&useSSL=false
</property>
без - serverTimezone = UTC - это не работает
новые версии mysql-коннектора устанавливают SSL-соединение по умолчанию... для его решения:
Загрузите старую версию mysql-коннектора, например mysql-connector-java-5.0.8.zip
. , или , , Загрузите OpenSSL для Windows и следуйте инструкциям по его установке
Решение Чтобы исправить это, добавьте useSSL = false в конце строки подключения MySQL:
ех.
application.properties
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
Поскольку я в настоящее время нахожусь в режиме разработки, я установил для useSSL значение "Нет" не в tomcat, а в конфигурациях сервера mysql. Пошел в Управление настройками доступа\Управление подключениями к серверу из рабочей среды → Выбрал мое соединение. Внутри вкладки подключения перешли на вкладку SSL и отключили настройки. Работал на меня.