DROP USER
(o DROP ROLE
, stessa cosa) non può procedere mentre il ruolo possiede ancora qualcosa o dispone di privilegi concessi su altri oggetti.
Sbarazzati di tutti i privilegi con DROP OWNED
(che non è troppo evidente dalla dicitura) . Il manuale:
Quindi la sequenza affidabile di comandi per eliminare un ruolo è:
REASSIGN OWNED BY ryan TO postgres; -- or some other trusted role
DROP OWNED BY ryan;
Esegui entrambi i comandi in ogni database dello stesso cluster dove il ruolo possiede qualcosa o ha dei privilegi!
E infine:
DROP USER ryan;
REASSIGN OWNED
cambia la proprietà per tutti gli oggetti attualmente di proprietà del ruolo.DROP OWNED
quindi revoca solo i privilegi (proprietà fuori mano).
In alternativa, puoi saltare REASSIGN OWNED
. Quindi DROP OWNED
(anche) rilascerà tutti gli oggetti di proprietà dell'utente. (Sei sicuro?!)
Correlati:
- Elimina un ruolo con privilegi (con una funzione per generare comandi per tutti i DB rilevanti)
- Trova oggetti collegati a un ruolo PostgreSQL