更改Firebird中其他用户的表

Dou*_*ise 5 ddl firebird alter-table

当我尝试在Firebird中更改来自不同所有者的表时,我收到此错误:

unsuccessful metadata update
MODIFY RDB$RELATION_FIELDS failed
no permission for control access to TABLE TAGS
Run Code Online (Sandbox Code Playgroud)

我已经为此用户授予了所有权限,还有REFERENCES权限,但我仍然收到此错误.

有谁知道如何解决这个问题?

我使用Firebird 1.5

谢谢

Mar*_*eel 9

Interbase 6.0语言参考(可从http://www.firebirdsql.org/en/reference-manuals/获取)ALTER TABLE状态:

表可以由其创建者,SYSDBA用户以及具有操作系统超级用户权限的任何用户进行更改.

换句话说,如果您不是表的所有者,则需要以登录身份登录SYSDBA,或者需要以数据库的形式在root或Adminstrator上登录.有 - 据我所知 - 没有其他方法可以将表更改为不同的用户.

在Firebird 2.5中,还有一个RDB$ADMIN角色允许被授予此角色的用户使用与SYSDBA相同的权限.

您可以使用的权限GRANT(除外REFERENCES)仅适用于DML,不适用于DDL操作.

Firebird 3引入了元数据权限,允许您将这些权限授予特定对象类型的特定角色用户.

例如:

GRANT ALTER ANY TABLE TO Joe;
Run Code Online (Sandbox Code Playgroud)

将允许用户Joe更改当前数据库中的任何表.

  • "具有操作系统超级用户权限的任何用户"这仅适用于Linux版本的Firebird. (3认同)