Respostas:
ALTER DATABASE name OWNER TO new_owner;
Veja a entrada do manual do Postgresql sobre isso para mais detalhes.
ERROR: must be member of role ...
= Não funciona com RDS
A resposta de Frank Heikens atualizará apenas a propriedade do banco de dados. Freqüentemente, você também deseja atualizar a propriedade de objetos contidos (incluindo tabelas). Começando com o Postgres 8.2, REASSIGN POSSUÍDO está disponível para simplificar esta tarefa.
EDIÇÃO IMPORTANTE!
Nunca use REASSIGN OWNED
quando a função original estiver postgres
, pois isso pode danificar toda a instância do banco de dados. O comando atualizará todos os objetos com um novo proprietário, incluindo recursos do sistema (postgres0, postgres1, etc.)
Primeiro, conecte-se ao banco de dados do administrador e atualize a propriedade do banco de dados:
psql
postgres=# REASSIGN OWNED BY old_name TO new_name;
Este é um equivalente global do ALTER DATABASE
comando fornecido na resposta de Frank, mas, em vez de atualizar um banco de dados específico, ele altera a propriedade de todos os bancos de dados pertencentes a 'old_name'.
A próxima etapa é atualizar a propriedade das tabelas para cada banco de dados:
psql old_name_db
old_name_db=# REASSIGN OWNED BY old_name TO new_name;
Isso deve ser realizado em cada banco de dados pertencente a 'old_name'. O comando atualizará a propriedade de todas as tabelas no banco de dados.
postgres
ele mesmo ... Aprendeu isso da maneira mais difícil.
REASSIGN OWNED
(normalmente porque o seu proprietário é postgres
), consulte os trechos em stackoverflow.com/a/2686185/1839209 .