Исключение ГДС. 335544421. соединение отклонено удаленным интерфейсом

Я пытаюсь подключиться к базе данных firebird с помощью драйвера jaybird jdbc. Firebird работает под ubuntu. Я создал простую базу данных, расположенную в /tmp/hellofb.fdb (да, не самое лучшее место, просто для тестирования). Я использую суперсервер firebird 3.0. Служба firebird запущена и работает sudo service firbird3.0 status:

firebird3.0.service - Firebird Database Server ( SuperServer )
   Loaded: loaded (/lib/systemd/system/firebird3.0.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2017-10-25 22:40:53 CEST; 25min ago
  Process: 23411 ExecStart=/usr/sbin/fbguard -pidfile /run/firebird3.0/default.pid -daemon -forever (code=exited, status=0/SUCC
 Main PID: 23412 (fbguard)
    Tasks: 4 (limit: 4915)
   CGroup: /system.slice/firebird3.0.service
           ├─23412 /usr/sbin/fbguard -pidfile /run/firebird3.0/default.pid -daemon -forever
           └─23413 /usr/sbin/firebird

Okt 25 22:40:53 XPS-L322X systemd[1]: Starting Firebird Database Server ( SuperServer )...
Okt 25 22:40:53 XPS-L322X systemd[1]: Started Firebird Database Server ( SuperServer ).

Мое приложение spring boot.properties задается:

spring.datasource.url:jdbc:firebirdsql://localhost:3050//tmp/hellofb.fdb
spring.datasource.driverClassName:org.firebirdsql.jdbc.FBDriver

Однако, когда я пытаюсь подключиться к базе данных, я получаю следующее исключение:

org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544421. connection rejected by remote interface

Я пробовал все возможные перестановки, предоставленные часто задаваемые вопросы о jaybird, у меня заканчиваются варианты. Любая помощь будет принята с благодарностью!

Примечание. Я попытался подключиться к базе данных с помощью flamerobin, и все работает нормально.


person BigONotation    schedule 25.10.2017    source источник
comment
Какая версия Firebird, какая версия Jaybird, какие значения AuthServer и WireCrypt в firebird.conf?   -  person Mark Rotteveel    schedule 26.10.2017
comment
Также скажите использовать значение параметра IPv6V6Only.   -  person Mark Rotteveel    schedule 26.10.2017


Ответы (1)


Учитывая, что вы не предоставили информацию, о которой я просил в комментариях, я должен предположить, что вы используете Firebird 3 с Jaybird 2.2.x, основываясь на описанном поведении.

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

Возможная причина: требуется шифрование проводного протокола.

Firebird 3 представляет ряд новых функций безопасности, которые включены по умолчанию, но не поддерживаются Jaybird 2.2. Чтобы Jaybird 2.2 мог подключаться к Firebird 3, вам нужно смягчить некоторые из этих настроек.

Чтобы разрешить подключение Jaybird 2.2.x, вам необходимо изменить следующие настройки в firebird.conf (и перезапустить Firebird после изменения настройки):

Ослабьте настройку WireCrypt с Required по умолчанию на Enabled:

WireCrypt = Enabled

Включите поддержку устаревшего протокола аутентификации:

AuthServer = Srp, Legacy_Auth

Затем вам нужно убедиться, что пользователь, которого вы хотите использовать для подключения к Firebird, создан с помощью устаревшего менеджера пользователей, включив поддержку устаревшего менеджера пользователей:

UserManager = Srp, Legacy_UserManager

Перезапустите Firebird, чтобы применить эти настройки, а затем во Flamerobin под учетной записью SYSDBA (или пользователем с ролью RDB$ADMIN) создайте нужного пользователя:

CREATE USER youruser PASSWORD 'yourpasw' USING PLUGIN Legacy_UserManager

В качестве альтернативы вы можете перейти на Jaybird 3.0.4 или более позднюю версию, которая поддерживает протокол аутентификации Srp и шифрование проводного протокола.

Эти настройки более подробно описаны на нашей вики в статье Jaybird и Firebird 3. . Эта информация отсутствовала в нашем FAQ, теперь я добавил ее в соединение отклонено удаленным интерфейсом (335544421).

Возможная причина: нет имени пользователя или пароля

В Jaybird 3 или более поздней версии и Firebird 3 или более поздней версии эта ошибка может быть результатом отсутствия имени пользователя или пароля. Отсутствие имени пользователя или пароля приводит к тому, что Jaybird не пытается использовать какой-либо плагин аутентификации. Это приводит к тому, что Firebird отклоняет попытку подключения, так как должна быть выполнена хотя бы одна попытка аутентификации.

person Mark Rotteveel    schedule 28.10.2017