Firebird数据库SYSDBA连接错误

时间:2017-12-31 08:41:45

标签: database connection firebird isql

我刚刚安装了Firebird for Win64,我正在尝试连接到预装ISQL的员工数据库。
按照Firebird官方 QuickStart 文档中的步骤,我打开了ISQL实用程序并输入:

connect localhost:employee user sysdba password masterkey;

结果我得到了:

Statement failed, SQLSTATE = 28000
Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

screenshot of IQSL utility

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

2 个答案:

答案 0 :(得分:2)

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

如果没有主机名,ISQL将默认使用Firebird嵌入模式,而不是服务器。要进行比较,请尝试使用isql employee.fdb(或isql employee),它将使用您当前的操作系统用户名登录,而isql localhost:employee将失败并显示“您的用户名和密码未定义”。

您似乎指定了与默认masterkey不同的密码,或者某种方式未初始化sysdba帐户。我记得早期的Firebird 3版本的安装程序有问题,但我不认为3.0.2应该受此影响(或者至少:它对我有用)。

如果未初始化SYSDBA帐户,请按照Firebird 3发行说明的步骤Initializing the Security Database部分执行:

  

初始化步骤

     

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

     

SQL用户管理命令适用于任何打开的数据库。   因为示例数据库employee.fdb存在于您的   安装并已在databases.conf中别名,很方便   将它用于用户管理任务。

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

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

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

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

  8.   

'SomethingCryptic'应该是您的密码。

如果创建了SYSDBA用户,如果您不再记住自己设置的内容,则需要更改其密码。按照相同的步骤,但在步骤3中执行:

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

如果这导致错误“找不到用户的记录:SYSDBA”,请确保您确实以SYSDBA身份连接,否则请重试原始步骤3.没有管理员访问权限的行为就像用户不存在,因此如果用户确实不存在,或者如果您与非特权用户建立连接,则错误相同。

答案 1 :(得分:0)

CONNECT&#39;员工&#39;用户&#39; SYSDBA&#39;密码&#39; masterkey&#39;;

你需要确保你的alias.conf有这样的东西:employee = C:/examplepath/employee.fdb 确保firebird的服务在

相关问题