当我尝试更改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更改当前数据库中的任何表。