Mar*_*rco 3 database connection firebird isql
我刚刚安装了 Win64 版 Firebird,并且尝试连接到用 ISQL 预打包的员工数据库。按照 Firebird 官方快速入门指南中的步骤,我打开 ISQL 实用程序并输入:
connect localhost:employee user sysdba password masterkey;
Run Code Online (Sandbox Code Playgroud)
结果我得到:
语句失败,SQLSTATE = 28000
您的用户名和密码未定义。请您的数据库管理员设置 Firebird 登录。
最奇怪的是,如果我导航到员工数据库示例本身并从那里发出 isql 命令,我就可以成功连接。
不同之处在于,直接连接到数据库文件不需要密码,它甚至会忽略密码,而只使用提供的用户来知道要应用哪些权限。
\n\n如果没有主机名,ISQL 将默认使用 Firebird 嵌入模式,而不是服务器。为了进行比较,尝试使用isql employee.fdb
(或isql employee
),它只会使用您当前的操作系统用户名登录,而isql localhost:employee
会失败并显示“您的用户名和密码未定义”。
看起来您指定的密码与 masterkey 的默认密码不同,或者不知何故 sysdba 帐户未初始化。我记得早期 Firebird 3 版本的安装程序存在问题,但我认为 3.0.2 不应受此影响(或者至少:它对我有用)。
\n\n如果 SYSDBA 帐户未初始化,请按照 Firebird 3 发行说明的初始化安全数据库部分中的步骤操作:
\n\n\n\n\n初始化步骤
\n\n初始化是使用isql实用程序在嵌入式模式下执行的。\n 对于嵌入式连接,不需要身份验证密码\n,如果您提供了身份验证密码,该密码将被忽略。嵌入式连接在没有登录凭据的情况下也可以正常工作,并且如果您省略用户名,则可以使用您的主机凭据将您登录到 xe2x80x9d 中。然而,即使用户名不需要身份验证,在现有安全数据库中创建或修改任何内容都需要用户是 SYSDBA;\n 否则,isql将针对 CREATE USER\n 请求抛出权限错误。
\n\nSQL 用户管理命令适用于任何打开的数据库。\n 因为示例数据库
\n\nemployee.fdb
存在于\n 安装中并且已在 中指定别名databases.conf
,所以可以方便地\n 使用它来执行用户管理任务。\n
\n- \n
停止 Firebird 服务器。Firebird 3 主动缓存与安全数据库的连接。服务器连接的存在可能会阻止isql建立嵌入式连接。
- \n
在合适的 shell 中,启动isql交互式会话,通过其别名打开员工数据库:
\n\nRun Code Online (Sandbox Code Playgroud)> isql -user sysdba employee\n
- \n
创建SYSDBA用户:
\n\nRun Code Online (Sandbox Code Playgroud)SQL> create user SYSDBA password \'SomethingCryptic\';\nSQL> commit;\nSQL> quit;\n
- \n
要完成初始化,请再次启动 Firebird 服务器。现在您将能够使用您分配给 SYSDBA 的密码对数据库(包括安全数据库)执行网络登录。
其中“SomethingCryptic”应该是您的密码。
\n\n如果创建了 SYSDBA 用户,如果您忘记了所设置的内容,则需要更改其密码。遵循相同的步骤,但在步骤 3 中执行以下操作:
\n\nSQL> alter user SYSDBA set password \'<new password>\';\nSQL> commit;\nSQL> quit;\n
Run Code Online (Sandbox Code Playgroud)\n\n如果这给出错误“未找到用户的记录:SYSDBA”,请确保您确实以 SYSDBA 身份连接,否则重试原始步骤 3。没有管理员访问权限将表现为该用户不存在,因此该错误如果用户确实不存在,或者您与非特权用户连接,则情况相同。
\n