DROP USER
(eller DROP ROLE
, samma sak) kan inte fortsätta medan rollen fortfarande äger någonting eller har några beviljade privilegier på andra objekt.
Bli av med alla privilegier med DROP OWNED
(vilket inte är alltför uppenbart av formuleringen) . Handboken:
Så den pålitliga sekvensen av kommandon för att ta bort en roll är:
REASSIGN OWNED BY ryan TO postgres; -- or some other trusted role
DROP OWNED BY ryan;
Kör båda kommandona i varje databas i samma kluster där rollen äger något eller har några privilegier!
Och slutligen:
DROP USER ryan;
REASSIGN OWNED
ändrar äganderätt för alla objekt som för närvarande ägs av rollen.DROP OWNED
återkallar då bara privilegier (äganderätt ur vägen).
Alternativt kan du hoppa över REASSIGN OWNED
. Sedan DROP OWNED
kommer (även) att släppa alla objekt som ägs av användaren. (Är du säker?!)
Relaterat:
- Släpp en roll med privilegier (med en funktion för att generera kommandon för alla relevanta databaser)
- Hitta objekt kopplade till en PostgreSQL-roll