更改Firebird中其他用户的表

时间:2012-02-10 23:42:33

标签: firebird ddl alter-table

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

unsuccessful metadata update
MODIFY RDB$RELATION_FIELDS failed
no permission for control access to TABLE TAGS

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

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

我使用Firebird 1.5

由于

1 个答案:

答案 0 :(得分:8)

ALTER TABLE州的Interbase 6.0语言参考(http://www.firebirdsql.org/en/reference-manuals/提供):

  

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

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

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

您可以GRANTREFERENCES除外)的权利仅适用于DML,不适用于DDL操作。

Firebird 3引入了metadata privileges,允许您将这些权限授予特定对象类型的特定角色用户。

例如:

GRANT ALTER ANY TABLE TO Joe;

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