Risposte:
ALTER DATABASE name OWNER TO new_owner;
Vedi la voce del manuale Postgresql su questo per maggiori dettagli.
ERROR: must be member of role ...
= NON FUNZIONA CON RDS
La risposta di Frank Heikens aggiornerà solo la proprietà del database. Spesso, si desidera anche aggiornare la proprietà degli oggetti contenuti (comprese le tabelle). A partire da Postgres 8.2, REASSIGN OWNED è disponibile per semplificare questa attività.
MODIFICA IMPORTANTE!
Non usare mai REASSIGN OWNED
quando il ruolo originale è postgres
, questo potrebbe danneggiare l'intera istanza del DB. Il comando aggiorna tutti gli oggetti con un nuovo proprietario, comprese le risorse di sistema (postgres0, postgres1, ecc.)
Innanzitutto, connettiti al database di amministrazione e aggiorna la proprietà del DB:
psql
postgres=# REASSIGN OWNED BY old_name TO new_name;
Questo è un equivalente globale del ALTER DATABASE
comando fornito nella risposta di Frank, ma invece di aggiornare un determinato DB, cambia la proprietà di tutti i DB di proprietà di "old_name".
Il prossimo passo è aggiornare la proprietà delle tabelle per ciascun database:
psql old_name_db
old_name_db=# REASSIGN OWNED BY old_name TO new_name;
Questo deve essere eseguito su ciascun DB di proprietà di 'old_name'. Il comando aggiornerà la proprietà di tutte le tabelle nel DB.
postgres
lui stesso ... L'ho imparato nel modo più duro.
REASSIGN OWNED
(in genere perché il proprietario è postgres
), vedere i frammenti in stackoverflow.com/a/2686185/1839209 .