0

数据库“mydb”归角色“mydb_owner”所有。

用户“currentuser”尝试使用从该数据库中删除角色“roletodelete”

revoke all on all tables in schema public,firma1 from "roletodelete" cascade;
revoke all on all sequences in schema public,firma1 from "roletodelete" cascade;
revoke all on database mydb from "roletodelete" cascade;
revoke all on all functions in schema public,firma1 from "roletodelete" cascade;
revoke all on schema public,firma1 from "roletodelete" cascade;
revoke mydb_owner from "roletodelete" cascade;
ALTER DEFAULT PRIVILEGES IN SCHEMA public,firma1 revoke all ON TABLES from "roletodelete";
GRANT "roletodelete" TO "currentuser";
reassign owned by "roletodelete" to mydb_owner;
drop owned by "roletodelete";
drop role "roletodelete";

我以超级用户身份运行它并得到了

    ERROR: role "roletodelete" cannot be dropped because some objects depend on it
DETAIL:  privileges for default privileges on new relations belonging to role currentuser in schema public
privileges for default privileges on new relations belonging to role currentuser schema firma1

如何创建保证删除角色的脚本?

该脚本已经包含:

revoke all on schema public,firma1 from "roletodelete" cascade;

为什么 postgres 抱怨公共模式的特权如果被撤销则依赖于这个角色?如何解决这个问题?

有很多关于这个的问题和答案,比如:

无法删除 PostgreSQL 角色。错误:`无法删除,因为某些对象依赖于它`

PostgreSQL - 如何快速删除具有现有权限的用户

https://dba.stackexchange.com/questions/155332/find-objects-linked-to-a-postgresql-role

我将他们的建议放在上面的删除脚本中,但问题仍然存在。

4

0 回答 0