Почему роль нельзя отбросить, потому что некоторые объекты зависят от нее - PullRequest
0 голосов
/ 12 апреля 2020

База данных "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 жалуется, что привилегии для схемы publi c зависят от этой роли, если они отозваны? Как это исправить?

Есть много вопросов и ответов по этому поводу, таких как:

Невозможно удалить PostgreSQL роль. Ошибка: `не может быть удалено, потому что некоторые объекты зависят от него`

PostgreSQL - как быстро удалить пользователя с существующими привилегиями

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

Я положил рекомендации из них в сценарий удаления выше, но проблема сохраняется.

...