GDS Exception. 335544421. connection rejected by remote interface

流过昼夜 提交于 2019-12-17 10:03:26

问题


I am trying to connect to a firebird db using the jaybird jdbc driver. Firebird is running under ubuntu. I have created a simple database located under /tmp/hellofb.fdb (yeah not the best place, just for testing). I am running firebird superserver 3.0. The firebird service is up and running 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 ).

My spring boot application.properties is given by:

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

However, when I try to connect to the database, I get the following exception:

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

I have tried all possible permutations given by the jaybird FAQ, I am running out of options. Any help would be greatly appreciated!

Note: I tried to connect to the databse using flamerobin and everything works just fine


回答1:


Given you haven't provided the information I asked for in the comments, I have to guess you are using Firebird 3 with Jaybird 2.2.x based on the described behavior.

The error connection rejected by remote interface can also occur under other conditions than described below.

Possible cause: wire protocol encryption required

Firebird 3 introduces a number of new security features that are enabled by default, but are not supported by Jaybird 2.2. To allow Jaybird 2.2 to connect to Firebird 3 you need to relax some of those settings.

To allow Jaybird 2.2.x to connect, you need to change the following settings in firebird.conf (and restart Firebird after changing the setting):

Relax the WireCrypt setting from its default of Required to Enabled:

WireCrypt = Enabled

Enable support for the legacy authentication protocol:

AuthServer = Srp, Legacy_Auth

You then need to make sure the user you want to use for connecting to Firebird is created with the legacy usermanager by enabling support for the legacy usermanager:

UserManager = Srp, Legacy_UserManager

Restart Firebird to apply these settings, and then - in Flamerobin - with a SYSDBA account (or user with role RDB$ADMIN), create the required user:

CREATE USER youruser PASSWORD 'yourpasw' USING PLUGIN Legacy_UserManager

Alternatively you could upgrade to Jaybird 3.0.4 or higher, which supports the Srp authentication protocol and wire protocol encryption.

These settings are described in more detail on our wiki in article Jaybird and Firebird 3. This information was absent from our FAQ, I have now added it under connection rejected by remote interface (335544421).

Possible cause: no user name or password

With Jaybird 3 or higher and Firebird 3 or higher, this error can be the result of not providing a username or password. The absence of a user name or password causes Jaybird to not try any authentication plugin. This results in Firebird rejecting the connection attempt as at least one authentication attempt should be done.



来源:https://stackoverflow.com/questions/46942199/gds-exception-335544421-connection-rejected-by-remote-interface

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!