当我尝试在Firebird中更改来自不同所有者的表时,我收到了此错误:
unsuccessful metadata update
MODIFY RDB$RELATION_FIELDS failed
no permission for control access to TABLE TAGS
我已经为此用户授予了所有权限,还有REFERENCES权限,但我仍然收到此错误。
有人知道如何解决这个问题吗?
我使用Firebird 1.5
由于
答案 0 :(得分:8)
ALTER TABLE
州的Interbase 6.0语言参考(http://www.firebirdsql.org/en/reference-manuals/提供):
表可以由其创建者,SYSDBA用户和任何用户进行更改 具有操作系统超级用户权限。
换句话说,如果您不是表的所有者,则需要以SYSDBA
登录,或者需要以数据库的形式在root或Adminstrator上登录。有 - 据我所知 - 没有其他方法可以将表更改为不同的用户。
在Firebird 2.5中,还有RDB$ADMIN
角色,允许被授予此角色的用户使用与SYSDBA相同的权限。
您可以GRANT
(REFERENCES
除外)的权利仅适用于DML,不适用于DDL操作。
Firebird 3引入了metadata privileges,允许您将这些权限授予特定对象类型的特定角色用户。
例如:
GRANT ALTER ANY TABLE TO Joe;
允许用户Joe更改当前数据库中的任何表。