2012-03-23 11 views
12

Próbuję upuścić rolę "xyz", która wcześniej była właścicielem schematu o tej samej nazwie "xyz". Zmieniłem własność schematu, jak poniżej, i na wszelki wypadek uruchom ponownie przydzielone prawo własności (chociaż wszystkie tabele zostały utworzone przez innego użytkownika z mocą superużytkownika). Więc biegnę wszystko:Rola zrzutów PostgreSQL nie powiodła się z powodu domyślnych uprawnień

alter schema xyz owner to postgres; 
reassign owned by xyz to postgres; 
alter default privileges in schema seeds revoke all on tables from xyz cascade; 
alter default privileges in schema seeds revoke all on sequences from xyz cascade; 
alter default privileges in schema seeds revoke all on functions from xyz cascade; 

I wciąż otrzymuję błąd:

drop role xyz; 
ERROR: role "xyz" cannot be dropped because some objects depend on it 
DETAIL: owner of default privileges on new relations belonging to role xyz in schema xyz 

także FYI:

postgres=# \du rsi 
List of roles 
Role name | Attributes | Member of 
-----------+----------------+----------- 
rsi  | No inheritance | {} 

Czego mi brakuje? Każda pomoc będzie doceniona! Dzięki!!

+0

Przenieść to do dba.stackexchange.com? –

Odpowiedz

13

Zrobione z PostgreSQL documentation na ALTER DEFAULT PRIVILEGES Notes sekcja:

If you wish to drop a role for which the default privileges have been altered, it is necessary to reverse the changes in its default privileges or use DROP OWNED BY to get rid of the default privileges entry for the role.

Innym worthy mention z dokumentacji dotyczącej DROP OWNED BY w tym przypadku jest również, że

Because DROP OWNED only affects the objects in the current database, it is usually necessary to execute this command in each database that contains objects owned by a role that is to be removed.

Dlatego może się wahać, co oznacza, że być może będziesz musiał wydać instrukcję w większej liczbie baz danych.

Po otrzymaniu tych samych wiadomości, o których mowa w pytaniu, wypróbowałem oświadczenie DROP OWNED BY i zadziałało. Mam nadzieję że to pomoże!

+5

'DROP OWNED BY usr;' a następnie 'DROP USER usr;' pracował dla mnie, dzięki! – cvsguimaraes

Powiązane problemy