Firebird数据库SYSDBA连接错误

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

我刚刚安装了 Win64 版 Firebird,并且尝试连接到用 ISQL 预打包的员工数据库。按照 Firebird 官方快速入门指南中的步骤,我打开 ISQL 实用程序并输入:

connect localhost:employee user sysdba password masterkey;

结果我得到:

语句失败,SQLSTATE = 28000
您的用户名和密码未定义。请您的数据库管理员设置 Firebird 登录。

最奇怪的是,如果我导航到员工数据库示例本身并从那里发出 isql 命令,我就可以成功连接。

database connection firebird isql
2个回答
6
投票

不同之处在于,直接连接到数据库文件不需要密码,它甚至会忽略密码,只使用提供的用户来知道要应用哪些权限。

如果没有主机名,ISQL 将默认使用 Firebird 嵌入模式,而不是服务器。为了进行比较,请尝试使用

isql employee.fdb
(或
isql employee
),它只会使用您当前的操作系统用户名登录,而
isql localhost:employee
将失败并显示“您的用户名和密码未定义”。

看起来您指定的密码与 masterkey 的默认密码不同,或者不知何故 sysdba 帐户未初始化。我记得早期 Firebird 3 版本的安装程序存在问题,但我认为 3.0.2 不应受此影响(或者至少:它对我有用)。

如果 SYSDBA 帐户未初始化,请按照 Firebird 3 发行说明中初始化安全数据库部分的步骤操作:

初始化步骤

使用 isql 实用程序在嵌入式模式下执行初始化。 对于嵌入式连接,不需要身份验证密码 如果您提供的话,将会被忽略。嵌入式连接将 无需登录凭据即可正常工作,并使用您的主机“登录” 如果省略用户名,则为凭据。然而,即使用户 名称不受身份验证、创建或修改任何内容的影响 在现有的安全数据库中要求用户是SYSDBA; 否则,isql 将为 CREATE USER 抛出权限错误 请求。

SQL 用户管理命令适用于任何打开的数据库。 因为示例数据库

employee.fdb
存在于您的 安装好并且已经在
databases.conf
中起别名了,很方便 将其用于用户管理任务。

  1. 停止 Firebird 服务器。 Firebird 3 主动缓存与安全数据库的连接。服务器连接的存在可能 防止 isql 建立嵌入式连接。

  2. 在合适的 shell 中,启动 isql 交互式会话,通过其别名打开员工数据库:

    > isql -user sysdba employee
    
  3. 创建SYSDBA用户:

    SQL> create user SYSDBA password 'SomethingCryptic';
    SQL> commit;
    SQL> quit;
    
  4. 要完成初始化,请再次启动 Firebird 服务器。现在您将能够对数据库执行网络登录, 包括安全数据库,使用您分配的密码 系统DBA。

其中“SomethingCryptic”应该是您的密码。

如果创建了 SYSDBA 用户,如果您忘记了所设置的内容,则需要更改其密码。遵循相同的步骤,但在步骤 3 中执行以下操作:

SQL> alter user SYSDBA set password '<new password>';
SQL> commit;
SQL> quit;

如果出现错误 “未找到用户记录:SYSDBA”,请确保您确实以 SYSDBA 身份连接,否则重试原始步骤 3。没有管理员访问权限将表现为该用户不存在,因此如果用户确实不存在,或者您与非特权用户连接,则错误是相同的。


2
投票

CONNECT '员工'用户'SYSDBA'密码'masterkey';

您需要确保您的alias.conf中有这样的内容:employee=C:/examplepath/employee.fdb 确保firebird服务已开启

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