将数据库FB3降级为FB2.5后-没有读取/选择访问database的权限



我收到错误"没有读取/选择访问DATABASE的权限">当我尝试使用不同于SYSDBA的用户连接到Firebird数据库时,比如说用户SOM。

如果我在同一台服务器上用SYSDBA创建一个新数据库,然后将对那里对象的访问权限授予SOM,那么它连接起来没有问题,但对于这个特定的数据库来说不是。我试图将所有权限,包括对系统对象的权限,授予SOM(我正在尽可能使用伟大的IBExpert(,但没有成功。

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

我找不到将任何内容授予对象DATABASE的方法。

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

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

firebird支持邮件列表中提供的解决方案:

Attach as SYSDBA and run
UPDATE RDB$DATABASE SET RDB$SECURITY_CLASS = NULL

您是否尝试过从2.5到BACKUP FB 3数据库的gbak?

  1. FB 3运行
  2. 将gbak从2.5放到fb3文件夹中,作为gbak25。或者,按照您的意愿操作,但2.5版的gbak需要使用3.0版的fbclient.dll
  3. gbak25-b-g-v db.fdb db.fbk-用户-通过

然后在2.5上恢复此备份。

最新更新