DROP USER
(oder DROP ROLE
, dasselbe) kann nicht fortfahren, solange die Rolle noch etwas besitzt oder über gewährte Privilegien für andere Objekte verfügt.
Befreien Sie sich von allen Privilegien mit DROP OWNED
(was aus dem Wortlaut nicht zu offensichtlich ist) . Das Handbuch:
Die zuverlässige Befehlsfolge zum Löschen einer Rolle lautet also:
REASSIGN OWNED BY ryan TO postgres; -- or some other trusted role
DROP OWNED BY ryan;
Führen Sie beide Befehle in jeder Datenbank desselben Clusters aus wo die Rolle etwas besitzt oder irgendwelche Privilegien hat!
Und schließlich:
DROP USER ryan;
REASSIGN OWNED
ändert den Besitz für alle Objekte, die derzeit der Rolle gehören.DROP OWNED
entzieht dann nur Privilegien (Besitzrechte aus dem Weg).
Alternativ können Sie REASSIGN OWNED
überspringen . Dann DROP OWNED
wird (auch) alle Objekte löschen, die dem Benutzer gehören. (Sind Sie sicher?!)
Verwandte:
- Löschen Sie eine Rolle mit Privilegien (mit einer Funktion zum Generieren von Befehlen für alle relevanten DBs)
- Objekte finden, die mit einer PostgreSQL-Rolle verknüpft sind