我刚刚安装了 Win64 版 Firebird,并且尝试连接到用 ISQL 预打包的员工数据库。按照 Firebird 官方快速入门指南中的步骤,我打开 ISQL 实用程序并输入:
connect localhost:employee user sysdba password masterkey;
结果我得到:
语句失败,SQLSTATE = 28000
您的用户名和密码未定义。请您的数据库管理员设置 Firebird 登录。
最奇怪的是,如果我导航到员工数据库示例本身并从那里发出 isql 命令,我就可以成功连接。
不同之处在于,直接连接到数据库文件不需要密码,它甚至会忽略密码,只使用提供的用户来知道要应用哪些权限。
如果没有主机名,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
停止 Firebird 服务器。 Firebird 3 主动缓存与安全数据库的连接。服务器连接的存在可能 防止 isql 建立嵌入式连接。
在合适的 shell 中,启动 isql 交互式会话,通过其别名打开员工数据库:
> isql -user sysdba employee
创建SYSDBA用户:
SQL> create user SYSDBA password 'SomethingCryptic'; SQL> commit; SQL> quit;
要完成初始化,请再次启动 Firebird 服务器。现在您将能够对数据库执行网络登录, 包括安全数据库,使用您分配的密码 系统DBA。
其中“SomethingCryptic”应该是您的密码。
如果创建了 SYSDBA 用户,如果您忘记了所设置的内容,则需要更改其密码。遵循相同的步骤,但在步骤 3 中执行以下操作:
SQL> alter user SYSDBA set password '<new password>';
SQL> commit;
SQL> quit;
如果出现错误 “未找到用户记录:SYSDBA”,请确保您确实以 SYSDBA 身份连接,否则重试原始步骤 3。没有管理员访问权限将表现为该用户不存在,因此如果用户确实不存在,或者您与非特权用户连接,则错误是相同的。
CONNECT '员工'用户'SYSDBA'密码'masterkey';
您需要确保您的alias.conf中有这样的内容:employee=C:/examplepath/employee.fdb 确保firebird服务已开启