数据库“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 角色。错误:`无法删除,因为某些对象依赖于它`
https://dba.stackexchange.com/questions/155332/find-objects-linked-to-a-postgresql-role
我将他们的建议放在上面的删除脚本中,但问题仍然存在。