将数据库 FB3 降级到 FB2.5 之后 - 没有 read/select 访问数据库的权限

After downgrading database FB3 to FB2.5 - no permission for read/select access to DATABASE

当我尝试使用不同于 SYSDBA 的用户连接到 Firebird 数据库时,我收到错误 “无权 read/select 访问数据库”,让说用户 SOM。

如果我在同一台服务器上使用 SYSDBA 创建一个新数据库,然后将对那里的对象的访问权授予 SOM,则连接没有问题,但对于这个特定的数据库 - 不是。我试图将所有权利,包括系统对象的权利授予 SOM(我在可能的情况下使用了很棒的 IBExpert),但没有成功。

c:\Program Files\Firebird\Firebird_2_5\bin>isql -user SOM -password secret 
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect "c:\data\data.fdb";
Database:  "c:\data\data.fdb", User: SOM
SQL> select * from exampletable ;
Statement failed, SQLSTATE = 28000
no permission for read/select access to DATABASE
Command error: select * from exampletable

我无法找到向对象数据库授予任何内容的方法。

可能的原因是有问题的数据库是通过 gbak 版本 2.5 从 Firebird 3 数据库恢复的(通过这种方式从 Firebird 3 降级到 2.5)。

一个可能的解决方案是使用用户 SOM 恢复数据库,但我不希望用户 SOM 是数据库的所有者。如果我使用 SYSDBA 进行备份和恢复,同样的问题再次出现。

你试过从 2.5 到 BACKUP FB 3 数据库的 gbak 吗?

  1. FB 3 运行
  2. 将gbak从2.5放到fb 3文件夹,作为gbak25。或者,随心所欲,但是 2.5 的 gbak 需要使用 3.0
  3. 的 fbclient.dll
  4. gbak25 -b -g -v db.fdb db.fbk -user ... -pass ...

然后在 2.5 上恢复此备份。

firebird-support 邮件列表中提供的解决方案:

Attach as SYSDBA and run

UPDATE RDB$DATABASE SET RDB$SECURITY_CLASS = NULL