PostgreSQL 删除具有默认权限的角色

6

我将尝试删除一个角色,并断开所有与它相关的联系,但是有一个持续存在的问题我无法解决。当我运行以下代码时:

drop role hank

它告诉我:
ERROR:  role "hank" cannot be dropped because some objects depend on it
DETAIL:  privileges for default privileges on new functions belonging to role brandon in schema alteryx
privileges for default privileges on new relations belonging to role brandon in schema alteryx

这个DDL存在于模式中:

ALTER DEFAULT PRIVILEGES IN SCHEMA alteryx
GRANT INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON TABLES
TO hank;

ALTER DEFAULT PRIVILEGES IN SCHEMA alteryx
GRANT EXECUTE ON FUNCTIONS TO hank;

当我在他们身上执行revoke命令时,命令成功了,但是权限仍然存在。

我已经搜索过DDL,但找不到如何解决这个问题而不尝试drop-cascade的方法。

欢迎任何指导。

1个回答

17

您需要运行以下两个语句以摆脱阻挡您的默认权限:

ALTER DEFAULT PRIVILEGES FOR ROLE brandon IN SCHEMA alteryx
   REVOKE ALL ON TABLES FROM hank;
ALTER DEFAULT PRIVILEGES FOR ROLE brandon IN SCHEMA alteryx
   REVOKE ALL ON FUNCTIONS FROM hank;

1
在这个例子中,brandonhank 是什么? - Gajus
1
@Gajus,这些是问题中提到的数据库用户(角色)。 - Laurenz Albe
我正在努力理解一个类似的情况。在我的情况下,我试图“drop role avnadmin”,但是出现了一个错误:“owner of default privileges on new functions belonging to role avnadmin in schema payments”。我不清楚在我的情况下hank的等效物是什么。我尝试过:ALTER DEFAULT PRIVILEGES FOR ROLE ??? IN SCHEMA payments REVOKE ALL ON TABLES FROM avnadmin; - Gajus
@Gajus 请使用 avnadmin 替换 brandonhank(并使用正确的模式)。 - Laurenz Albe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接