如何在基于Firebird的应用程序中定义登录名和密码?

时间:2019-03-14 15:18:40

标签: firebird firebird2.5

我知道,这不是严格的编程错误,因为我没有编写此程序,但是我在一台PC上安装了Streamsoft Pro,并且在将所有程序数据复制到第二台计算机时出现错误:

Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements.
unsupported on-disk structure for file c:\STREAM soft\STREAM soft SQL\Baza\SYSTEMST.FB; found 11.2, support 11.1

发现here只是与Firebird版本相关的错误,所以我将其更新为2.5.8,现在又收到其他错误:

DMSystem.SystemDatabase:
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements.
Your username and password are not defined. Ask your database administrator to set up a Firebird login.

我的问题是: 该如何设置?

2 个答案:

答案 0 :(得分:2)

Firebird将所有用户/密码保存在所谓的“安全数据库”中,该数据库是每个已安装的Firebird实例之一。

Firebird 3或4可能更复杂/更灵活,但这不是您的情况。

一台计算机上可以运行多个Firebird 1.x或2.x实例,每个实例都有自己的“安全数据库”。但是通常,如果有的话,一台计算机上只有一个Firebird实例,因此,在大多数情况下,您可能会认为有一个“安全数据库”将Firebird用户和密码保存在计算机上。

  

我收到有关Firebird版本的错误    我将其更新为2.5.8

您没有明确地拼写出来,所以我只能猜测您实际上做了什么。

但是如果我能看懂星星,那就是这样:

  1. 您安装了错误版本的Firebird。 2.0.x或2.1.x甚至3.0.x-但一个SteamSoft无法使用。
  2. 在安装过程中,SteamSoft很有可能发现错误的Firebird版本,并在该错误的Firebird实例的“安全数据库”中创建了所需的用户/登录名,但没有担保。
  3. 当您删除了错误的Firebird安装(您要DID卸载它,不是吗?”,因为在一台计算机上可能有多个FB实例,但需要进行特殊安排,而您没有报告自己做了此事)-安全数据库”。 不,您不能只是找到它并扔到Firebird 2.5上-不同的FB版本具有不同的不兼容格式。
  4. 当您安装新版FB 2.5.8时-它具有通常干净的“安全数据库”,仅具有SYSDBA用户,而没有SteamSoft特定用户。
  5. 当您针对FB 2.5的这个干净的“安全数据库”运行SteamSoft时,它会尝试使用不存在的用户登录并失败。

如果这个读取的水晶球是正确的,那么最简单的方法就是

  1. 卸载SteamSoft。
  2. 验证Firebird 2.5.8。未与SS一起卸载,也未停用。例如,如果您重新启动计算机,然后打开Windows服务-在“运行”状态下仍应有“ Firebird服务器默认实例”服务。
  3. 安装SteamSoft。希望它会找到正在运行的FB 2.5.8,并会自动在其中创建所有必需的自定义用户。

或者,您可以查阅SteamSoft文档或他们的支持。

很有可能您可以使用SteamSoft提供的诊断实用程序或内置的Firebird命令自己创建丢失的用户(如果您将获得所需的用户名和密码列表,但是SteamSoft可能不愿意拼出来)。与重新安装SteamSoft相比,创建用户要快得多,但是对于没有经验的用户,学习创建方式和创建内容的时间可能会更长。

如果可以的话,您可以将Firebird安装在与第一台计算机完全相同版本的新计算机上,它们(在同时使Firebird Server服务暂时停止的情况下)从旧计算机复制security database换一个新的。它包含用户和密码。

或者,在获得所需的用户名和密码列表之后,可以在新计算机的Firebird中手动创建它们。

P.S。还有另一种可能。用户和密码是“独立” Firebird服务器的功能(独立运行为特殊程序)。

也许SteamSoft被设计为可与“ Firebird Embedded”一起使用,即该软件不是独立运行,而是嵌入到SteamSoft程序本身中。 Firebird Embedded根本没有任何用户名和密码。如果能解决问题,那么SteamSoft不会提供不存在的用户名和密码,但根本不会提供。然后可能会发现SteamSoft与Firebird的非嵌入式版本不兼容。但这只能与SteamSoft文档或帮助台联系。

答案 1 :(得分:0)

第一个错误意味着您的数据库版本比Firebird安装版本新。通常最好使用备份和还原在系统之间移动数据库。既然您已经解决了该错误,我将只指向Why do I get an unsupported on-disk structure error when openining a Firebird database?以获得更多详细信息。

对于第二个错误,这意味着登录失败。用户不存在,或者使用了错误的密码。默认的Firebird安装仅包含一个用户:SYSDBA(取决于操作系统和安装程序的密码为masterkey还是随机生成的密码)。

您的应用程序可能需要特定的用户,并且考虑到Firebird将用户存储在单独的安全数据库中,因此该用户不存在。找出该用户的用户名并创建它。

您可以通过两种方式在Firebird 2.5中创建用户:

  1. 使用SQL user management statements

    create user <username> password <password>;
    commit;
    

    这需要SYSDBA访问(或安全数据库中具有管理员权限的用户)。

  2. 使用命令行工具gsec(自Firebird 3以来,不推荐使用SQL用户管理语句)

    gsec -user sysdba -password <sysdba-password>
    add <username> -pw <password>