当我尝试更改Firebird中其他所有者的表时,出现此错误:

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

我已经授予了该用户ALL特权,还授予了REFERENCES特权,但是仍然出现此错误。

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

我使用Firebird 1.5

谢谢

最佳答案

ALTER TABLE 上的《 Firebird 2.5语言引用》部分指出:

换句话说,如果您不是表的所有者,则需要以SYSDBA身份登录,或者需要以root用户或Adminstrator身份登录到具有数据库的计算机上。据我所知,没有其他方法可以将表更改为其他用户。
在Firebird 2.5中,还存在RDB$ADMIN角色,该角色使被授予该角色的用户能够以与SYSDBA相同的权限进行操作。
可以使用GRANT的权限(REFERENCES除外)仅适用于DML,不适用于DDL操作。
Firebird 3引入了metadata privileges,它允许您将这些权限授予特定对象类型的特定用户或角色。
例如:

GRANT ALTER ANY TABLE TO Joe;
将允许用户Joe更改当前数据库中的任何表。

10-08 07:21
查看更多