23

我有一个使用 Delphi 2006 和 Firebird 2.5 制作的应用程序。对于连接,请使用 Delphi 的 Interbase 组件。我在设计时设置了一个带有用户名、密码 tc 和工作正常的 TIBDatabase,但是当我想在另一台电脑上运行应用程序时(首先我在上面安装 Firebird 2.5),我收到了这个错误:

Statement failed, SQLSTATE = 28000

您的用户名和密码未定义。请您的数据库管理员设置 Firebird 登录。

这是什么?我该如何解决?

4

5 回答 5

17

该消息清楚地指出您在设计时用于在开发机器上连接的用户名和密码对于您尝试在另一台机器上连接的数据库服务器无效(我们称之为生产)。从您的消息来看,它似乎与您在设计时连接的服务器不同。

我建议您轻松测试此问题,将 TIBDatabase 组件上的 LoginPrompt 属性设置为 true,以允许它在连接之前向用户询问适当的凭据。您将能够使用该服务器的任何有效用户名/密码组合进行连接。为确保组合有效,请尝试使用 isql 命令行工具进行连接,例如命令

c:\test>isql test.fdb -u sysdba -p masterkey

将使用默认用户名和密码连接到 c:\test\test.fdb。(firebird 根目录必须在 path 环境变量中才能工作)

此外,您可以使用 gsec 命令行工具来调整此引擎的密码,或者您可以在尝试连接到该生产机器之前提供创建用户并更改该生产机器上的密码。

在 Windows 上,firebird 默认的 sysdba 密码是masterkey

于 2010-11-25T04:29:34.700 回答
2

最终在 Windows 上为我工作的解决方案是以管理员身份启动 cmd.exe 并运行"C:\Program Files (x86)\Firebird\Firebird_3_0\gsec.exe" -user sysdba -password masterkey -mo sysdba -pw masterkey

于 2020-03-27T21:23:01.167 回答
1

此错误是因为 Firebird db 的凭据根本没有存储在数据库文件中。它存储在 Firebird 服务器上的配置文件中。如果您复制数据库文件,而不是密码 - 您将拥有不同的密码。

在 Ubuntu 机器上,您可以在文件中找到密码和用户名,/etc/firebird/<version>/SYSDBA.password

它看起来像,

ISC_USER=sysdba
ISC_PASSWORD="password"

使用这些凭据连接到数据库文件。

于 2014-05-02T19:28:26.320 回答
1

我曾经在尝试使用 Firebird 2.5 客户端库连接到 Firebird 3.0.3 数据库时遇到此错误。我只是忘记将客户端库更新到 3.0.3。也许这会对某人有所帮助。

于 2018-09-12T13:48:54.490 回答
1

在来自 linux 终端的 'isql-fb' 和数据库上的 'CONNECT' 之后: - 我在删除(删除)后解决并重新创建了 'SYSDBA' 用户。

观察:我在 '/tmp/firebird' 的文件和文件夹权限有问题,我需要使用 'sudo' 或 root 来打开 'isql-fb'

谢谢。

于 2017-05-03T17:35:29.130 回答