DROP USER
(или DROP ROLE
, същото нещо) не може да продължи, докато ролята все още притежава нещо или има предоставени привилегии върху други обекти.
Отървете се от всички привилегии с DROP OWNED
(което не е твърде очевидно от формулировката) . Ръководството:
Така че надеждната последователност от команди за премахване на роля е:
REASSIGN OWNED BY ryan TO postgres; -- or some other trusted role
DROP OWNED BY ryan;
Изпълнете и двете команди във всяка база данни от същия клъстер където ролята притежава нещо или има някакви привилегии!
И накрая:
DROP USER ryan;
REASSIGN OWNED
променя собствеността за всички обекти, притежавани в момента от ролята.DROP OWNED
след това само отменя привилегии (собственост от пътя).
Като алтернатива можете да пропуснете REASSIGN OWNED
. След това DROP OWNED
(също) ще премахне всички обекти, притежавани от потребителя. (Сигурен ли си?!)
Свързани:
- Премахване на роля с привилегии (с функция за генериране на команди за всички съответни DB)
- Намиране на обекти, свързани с роля на PostgreSQL