GDS例外。 335544421.远程接口拒绝连接

时间:2017-10-25 21:15:53

标签: firebird jaybird

我正在尝试使用jaybird jdbc驱动程序连接到firebird数据库。 Firebird在ubuntu下运行。我在/tmp/hellofb.fdb下创建了一个简单的数据库(是的,不是最好的地方,只是为了测试)。我正在运行firebird superserver 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 application.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 FAQ给出的所有可能的排列,我的选项用完了。任何帮助将不胜感激!

注意:我尝试使用flamerobin连接到数据库,一切正常

1 个答案:

答案 0 :(得分:2)

鉴于您未能在评论中提供我要求的信息,我猜测您根据所描述的行为将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身份验证协议和有线协议加密。

这些设置在我们的wiki文章Jaybird and Firebird 3中有更详细的描述。我们的常见问题解答中没有此信息,我现在已将其添加到connection rejected by remote interface (335544421)下。

可能的原因:没有用户名或密码

使用Jaybird 3或更高版本以及Firebird 3或更高版本时,此错误可能是由于未提供用户名或密码而导致的。缺少用户名或密码会导致Jaybird不尝试任何身份验证插件。这导致Firebird拒绝连接尝试,因为至少应该进行一次身份验证尝试。