【问题标题】:Flamerobin connection failed with Firebird 3.0 in Ubuntu 16.04 LTS - Error: connection rejected by remote interfaceFlamerobin 在 Ubuntu 16.04 LTS 中与 Firebird 3.0 的连接失败 - 错误:连接被远程接口拒绝
【发布时间】:2016-09-02 03:33:43
【问题描述】:

我刚刚在 Ubuntu 16.04 LTS 中安装了 Firebird 3.0。我可以从 Windows 计算机使用 Flamerobin 连接到服务器。我还在服务器中安装了 Flamerobin 以便能够在本地管理数据库,但是在注册服务器和数据库后,连接失败。 Flamerobin 显示以下错误消息:

IBPP::SQLException
Context: Database::Connect,
Message: isc_attach_database failed,
SQL Message: -923, Connection not established,
Engine code: 335544421, Engine Message: connection rejected by remote interface.

您有什么建议可以解决这个问题并能够使用 Flamerobin 进行本地连接吗?

【问题讨论】:

  • 你是如何连接的(显示你使用的连接属性),以及加载了什么版本的 libfbclient,so?听起来您正在使用 2.5 或更早版本的客户端库进行连接,由于更严格的安全设置,默认情况下它不起作用。
  • @MarkRotteveel 抱歉耽搁了,我正在与其他配置进行远程访问,本地访问问题仍然存在。这些是连接设置。用于服务器注册,显示名称:Localhost,主机名:127.0.0.1,端口号:3050。用于数据库注册。显示名称:Testing,数据库路径:/home/angel/Documentos/FBDB/test.fdb,身份验证:使用保存的用户名和密码,用户名:SYSDBA,密码:密码,字符集:NONE,角色:(空)。如何验证客户端库版本?

标签: ubuntu firebird flamerobin firebird-3.0


【解决方案1】:

好的,经过几天尝试配置 Flamerobin 以连接 Firebird 3.0,我终于可以做到了。

首先我们需要知道 Flamerobin 试图加载哪个库。要知道它,我们使用以下命令:

ldd /usr/bin/flamerobin | grep libfb

输出:

libfbclient.so.2 => /usr/lib/x86_64-linux-gnu/libfbclient.so.2 (0x00007f48bb6f0000)

因此,Flamerobin 会加载旧版本的客户端库。 Firebird 3.0 的正确客户端库位于以下路径:

/opt/firebird/lib/libfbclient.so.3.0.0

经过几个小时的研究(我是 Linux 新手),我发现有必要在正确的库和 Flamerobin 加载旧库的路径之间创建一个符号链接。为此,我输入了以下命令(首先,我将旧库重命名为“libfbclient.so.2_”):

sudo ln -s /opt/firebird/lib/libfbclient.so.3.0.0 /usr/lib/x86_64-linux-gnu/libfbclient.so.2

最后,再次执行 Flamerobin,现在它已连接。 @MarkRotteveel 感谢提供线索。

【讨论】:

    【解决方案2】:

    您需要运行服务 fbguard。 (在flarerobin之前安装Firebird)

    我正在做这样的事情: $ cd /opt/firebird/bin/ sudo ./fbguard

    或者 $ cd /opt/firebird/bin/ sudo ./fbguard -onetime -daemon

    【讨论】:

    • 错误connection rejected by remote interface是从服务器发送到客户端的,所以服务器正在运行并建立了连接。如果 Firebird 无法启动,那么您将在套接字级别收到 connection denied 而不是 Firebird 服务器级别的 connection denied
    【解决方案3】:

    很好的提示,AngelAvila。出现错误“引擎代码:335544421,引擎消息:远程接口拒绝连接。”

    它对我有用。在我的具体情况下,必须做两件事:

    1. 由于文件/usr/lib/i386-linux-gnu/libfbclient.so.2已经存在,我将其重命名为libfbclient.so.2test

      sudo su
      mv . /usr/lib/i386-linux-gnu/libfbclient.so.2 > /usr/lib/i386-linux-gnu/libfbclient.so.2test

    2. 之后,对使用的文件进行了两次小修改(“...i386-...”而不是“...x86-64...”和“...libfbclient.so.3.0.1” “...libfbclient.so.3.0.0”):

      sudo ln -s /opt/firebird/lib/libfbclient.so.3.0.1 /usr/lib/i386-linux-gnu/libfbclient.so.2

    最后,数据库现在已在 Flamerobin 中连接。

    【讨论】:

    • 每种情况都可能不同,因为它取决于操作系统和 Firebird 版本,但本质上它是相同的解决方案。
    猜你喜欢
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 2022-11-06
    • 2019-08-22
    相关资源
    最近更新 更多