Réponses:
ALTER DATABASE name OWNER TO new_owner;
Voir l'entrée du manuel Postgresql à ce sujet pour plus de détails.
ERROR: must be member of role ...
= NE FONCTIONNE PAS AVEC RDS
La réponse de Frank Heikens ne mettra à jour que la propriété de la base de données. Souvent, vous souhaitez également mettre à jour la propriété des objets contenus (y compris les tables). À partir de Postgres 8.2, REASSIGN OWNED est disponible pour simplifier cette tâche.
MODIFICATION IMPORTANTE!
Ne jamais utiliser REASSIGN OWNED
lorsque le rôle d'origine est postgres
, cela pourrait endommager l'intégralité de votre instance DB. La commande mettra à jour tous les objets avec un nouveau propriétaire, y compris les ressources système (postgres0, postgres1, etc.)
Tout d'abord, connectez-vous à la base de données d'administration et mettez à jour la propriété de la base de données:
psql
postgres=# REASSIGN OWNED BY old_name TO new_name;
Ceci est un équivalent mondial de ALTER DATABASE
commande fournie dans la réponse de Frank, mais au lieu de mettre à jour une base de données particulière, cela change la propriété de toutes les bases de données appartenant à 'old_name'.
L'étape suivante consiste à mettre à jour la propriété des tables pour chaque base de données:
psql old_name_db
old_name_db=# REASSIGN OWNED BY old_name TO new_name;
Cela doit être effectué sur chaque base de données appartenant à 'old_name'. La commande mettra à jour la propriété de toutes les tables de la base de données.
postgres
lui-même ... A appris ça à la dure.
REASSIGN OWNED
(généralement parce que votre propriétaire l'est postgres
), consultez les extraits dans stackoverflow.com/a/2686185/1839209 .