DBeaver 无法连接到 Firebird

问题描述 投票:0回答:1

我想将 DBeaver 24.3.2 注册到 Firebird 5.0.0.1306 服务器的连接,但这似乎是一项不可能完成的任务。

我收到以下错误消息:

您的用户名和密码未定义。请您的数据库管理员设置 Firebird 登录。 [SQLState:28000,ISC错误代码:335544472]

当然,我使用的是默认用户和密码,而且我可以与其他数据库 GUI 管理器(如 IBExpert)建立连接。我尝试过设置新用户并使用其他版本的 JDBC 驱动程序。

我使用的是 Windows 11,连接驱动程序版本是 Jaybird 5.0.6.java8。驱动程序属性中是否有任何“机密”配置或其他内容?

jdbc firebird dbeaver jaybird
1个回答
0
投票

一般来说,这个错误意味着您的用户名和密码不正确。这可能有几个根本原因:

  1. 该用户不存在,
  2. 用户存在,但密码不正确,
  3. 用户存在,但对于尝试的身份验证插件不存在(特殊情况 1),或者对于尝试的身份验证插件,用户具有不同的密码(特殊情况 2),
  4. 您创建了一个区分大小写的用户(1 的特殊情况)。

您的情况可能是情况 3(但我需要对我在评论中提出的问题做出答复才能确定)。 Jaybird,Firebird JDBC 驱动程序,从 Jaybird 4 开始,当连接到 Firebird 3.0 及更高版本时,默认情况下仅尝试安全身份验证插件 Srp256 和 Srp。它不会尝试不安全的 Legacy_Auth 身份验证插件。

从 Firebird 3.0 开始,用户按照“用户管理器”存在。 Srp 系列身份验证插件(Srp、Srp256 和其他 SrpNNN 插件)只能对使用 Srp 用户管理器创建的用户进行身份验证,而 Legacy_Auth 插件只能对使用 Legacy_UserManager 创建的用户进行身份验证。

如果您可以连接其他工具,例如ISQL 或 IBExpert,作为管理员(SYSDBA 或安全数据库中具有 RDB$ADMIN 角色的用户),您可以查询

SEC$USERS
虚拟表以查看用户存在于哪个用户管理器。

问题可能是以下之一:

  1. 您尝试验证的用户存在于 Legacy_UserManager 中。基本上有两种方法可以解决它:

    1. (推荐)创建Srp用户管理器的用户。

      CREATE USER
      语句默认为
      UserManager
      设置中列出的第一个插件(
      firebird.conf
      ,可能在
      databases.conf
      中被覆盖),但是 - 只要它在
      UserManager
      设置中列出 - 您可以选择另一个带有
      USING PLUGIN Srp
      子句的用户管理器。

      我还建议删除其他用户管理器的用户,除非您确实需要旧的身份验证用户。除非您使用不支持 Srp 的古老客户端库,否则根本不应该使用 Legacy_Auth。

    2. 覆盖身份验证插件 Jaybird 尝试使用

      authPlugins
      连接属性,例如
      authPlugins=Legacy_Auth
      authPlugins=Srp256,Srp,Legacy_Auth
      首先尝试更安全的插件。

      在 DBeaver 中,您可以在连接设置的驱动程序属性选项卡上指定这一点(右键单击“用户属性”,然后单击“添加新属性”)。

  2. Srp 插件的用户确实存在。这意味着以下任一情况:

    1. Srp 用户管理器的此用户密码与 Legacy_UserManager 的密码不同。

      使用

      ALTER USER
      更改密码,并指定
      USING PLUGIN Srp
      子句以确保为正确的用户管理员更改密码。

    2. AuthServer
      中的
      firebird.conf
      设置不包括Srp256或Srp(例如,它仅是
      AuthServer = Legacy_Auth
      )。

      将Srp256添加到设置中;确保在之前添加它 Legacy_Auth(例如

      AuthServer = Srp256, Legacy_Auth
      ),以便最后尝试最不安全的选项。

我认为情况 4 不太可能发生,但如果您使用

CREATE USER "lowercasename" ...
,则可能会发生。这使其成为区分大小写的用户名,这意味着在连接属性中指定它时还必须将其用双引号引起来。另请参阅 无法使用 Java 登录时使用小写字母的用户连接到 Firebird 3.0。

© www.soinside.com 2019 - 2024. All rights reserved.