我有一个使用Delphi 2006和Firebird 2.5制作的应用程序。为了连接,我使用Delphi中的Interbase组件。我在设计时设置了一个带有用户名、密码等信息的TIBDatabase,它可以正常工作。但是当我想在另一台电脑上运行应用程序(首先我安装了Firebird 2.5),出现以下错误:
Statement failed, SQLSTATE = 28000
您的用户名和密码未定义。请联系数据库管理员设置Firebird登录。
这是什么?我该如何解决?
我有一个使用Delphi 2006和Firebird 2.5制作的应用程序。为了连接,我使用Delphi中的Interbase组件。我在设计时设置了一个带有用户名、密码等信息的TIBDatabase,它可以正常工作。但是当我想在另一台电脑上运行应用程序(首先我安装了Firebird 2.5),出现以下错误:
Statement failed, SQLSTATE = 28000
您的用户名和密码未定义。请联系数据库管理员设置Firebird登录。
这是什么?我该如何解决?
这条消息明确说明,你在开发机器上用于连接的用户名和密码,在连接到另一台生产环境的数据库服务器时是无效的。从你的消息中可以看出,设计时连接的服务器与生产环境连接的服务器不同。
我建议你通过将TIBDatabase组件的LoginPrompt属性设置为true,以便在连接之前提示用户输入合适的凭据来轻松测试此问题。你将能够使用该服务器的任何有效的用户名/密码组合进行连接。为确保组合是有效的,请尝试使用isql命令行工具进行连接,例如:
c:\test>isql test.fdb -u sysdba -p masterkey
将使用默认用户名和密码连接到c:\test\test.fdb。(为使其起作用,Firebird根目录必须在Path环境变量中)
此外,您可以使用gsec命令行工具来调整该引擎的密码,或者在尝试连接之前在生产机器上提供创建用户和更改密码。
在Windows上,Firebird默认的sysdba密码是masterkey。
对于我在Windows上遇到的问题,最终解决方案是以管理员身份启动cmd.exe,并运行 "C:\Program Files (x86)\Firebird\Firebird_3_0\gsec.exe" -user sysdba -password masterkey -mo sysdba -pw masterkey
这个错误是因为Firebird数据库的凭证并没有简单地存储在数据库文件中,而是存储在Firebird服务器的配置文件中。如果您只复制了DB文件而没有复制密码,那么您将会有一个不同的密码。
在Ubuntu机器上,您可以在文件/etc/firebird/<version>/SYSDBA.password
中找到密码和用户名。
它看起来像这样:
ISC_USER=sysdba
ISC_PASSWORD="password"
SYSDBA.password
配置文件中的密码 确实 是 isql
所需的。 - Evan Carrollgsec
工具。 - mghie在Linux终端中使用'isql-fb'并在数据库上执行'CONNECT'后: - 我通过删除(drop)并重新创建'SYSDBA'用户来解决了问题。
观察:我在'/tmp/firebird'的文件和文件夹权限方面遇到了问题,需要使用'sudo'或root打开'isql-fb'
谢谢。
DROP USER 'SYSDBA';
CREATE USER 'SYSDBA' PASSWORD 'masterkey';
ALTER USER 'SYSDBA' GRANT ADMIN ROLE;
- Wellington1993我曾经尝试使用Firebird 2.5客户端库连接到Firebird 3.0.3数据库时出现了错误。我只是忘记更新客户端库到3.0.3版本。希望这能帮助到其他人。