Клиенту H2 не удалось подключиться к серверу - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь подключиться к серверу H2, запущенному на той же машине с использованием Java. Я запустил сервер H2 в смешанном режиме. При подключении к серверу я получаю сообщение об ошибке.

Код для запуска сервера:

Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpSSL").start();

Код для подключения к серверу:

Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection("jdbc:h2:tcp://127.0.0.1/~/Data/test", "", "");

Ошибка:

Соединение разорвано: «неожиданный статус 352518912» [90067-197]

Кто-нибудь, пожалуйста, помогите мне с этим. Я застрял в этом на два дня.

1 Ответ

1 голос
/ 16 октября 2019

Вам необходимо использовать ssl протокол вместо tcp в URL-адресе, поскольку вы используете зашифрованный носок на сервере.

"jdbc:h2:ssl://127.0.0.1/~/Data/test"

Обратите внимание, что база данныхне может быть создан удаленно по умолчанию в последних версиях H2 из-за соображений безопасности. Вам необходимо создать базу данных на стороне сервера с локальным URL-адресом, таким как "jdbc:h2:~/Data/test", достаточно открыть и закрыть соединение с ним.

Также я надеюсь, что пустой пароль предназначен только для этого примера кода ввопрос. Если у вас есть база данных, в которой есть пользователь с привилегиями ADMIN (имя пользователя и пароль от первого подключения, которое создает базу данных, используются для создания такого пользователя) и пустой или слабый пароль (или если вы включите удаленное создание базы данных), любой,кто может подключиться к этому порту, получит полный доступ к вашему серверному процессу, и этот процесс, скорее всего, уже имеет такой же доступ к вашей системе, что и вы, поэтому вы эффективно создаете дыру в удаленной безопасности с -tcpAllowOthers и такими паролями.

...