我想将 DBeaver 24.3.2 注册到 Firebird 5.0.0.1306 服务器的连接,但这似乎是一项不可能完成的任务。
我收到以下错误消息:
您的用户名和密码未定义。请您的数据库管理员设置 Firebird 登录。 [SQLState:28000,ISC错误代码:335544472]
当然,我使用的是默认用户和密码,而且我可以与其他数据库 GUI 管理器(如 IBExpert)建立连接。我尝试过设置新用户并使用其他版本的 JDBC 驱动程序。
我使用的是 Windows 11,连接驱动程序版本是 Jaybird 5.0.6.java8。驱动程序属性中是否有任何“机密”配置或其他内容?
一般来说,这个错误意味着您的用户名和密码不正确。这可能有几个根本原因:
您的情况可能是情况 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
虚拟表以查看用户存在于哪个用户管理器。
问题可能是以下之一:
您尝试验证的用户仅存在于 Legacy_UserManager 中。基本上有两种方法可以解决它:
CREATE USER
语句默认为 UserManager
设置中列出的第一个插件(firebird.conf
,可能在 databases.conf
中被覆盖),但是 - 只要它在 UserManager
设置中列出 - 您可以选择另一个带有 USING PLUGIN Srp
子句的用户管理器。
我还建议删除其他用户管理器的用户,除非您确实需要旧的身份验证用户。除非您使用不支持 Srp 的古老客户端库,否则根本不应该使用 Legacy_Auth。
覆盖身份验证插件 Jaybird 尝试使用
authPlugins
连接属性,例如authPlugins=Legacy_Auth
或 authPlugins=Srp256,Srp,Legacy_Auth
首先尝试更安全的插件。
在 DBeaver 中,您可以在连接设置的驱动程序属性选项卡上指定这一点(右键单击“用户属性”,然后单击“添加新属性”)。
Srp 插件的用户确实存在。这意味着以下任一情况:
Srp 用户管理器的此用户密码与 Legacy_UserManager 的密码不同。
ALTER USER
更改密码,并指定 USING PLUGIN Srp
子句以确保为正确的用户管理员更改密码。
AuthServer
中的firebird.conf
设置不包括Srp256或Srp(例如,它仅是AuthServer = Legacy_Auth
)。
将Srp256添加到设置中;确保在之前添加它 Legacy_Auth(例如
AuthServer = Srp256, Legacy_Auth
),以便最后尝试最不安全的选项。
我认为情况 4 不太可能发生,但如果您使用
CREATE USER "lowercasename" ...
,则可能会发生。这使其成为区分大小写的用户名,这意味着在连接属性中指定它时还必须将其用双引号引起来。另请参阅 无法使用 Java 登录时使用小写字母的用户连接到 Firebird 3.0。