Respuestas:
ALTER DATABASE name OWNER TO new_owner;
Vea la entrada del manual Postgresql sobre esto para más detalles.
ERROR: must be member of role ...
= NO FUNCIONA CON RDS
La respuesta de Frank Heikens solo actualizará la propiedad de la base de datos. A menudo, también desea actualizar la propiedad de los objetos contenidos (incluidas las tablas). Comenzando con Postgres 8.2, REASSIGN OWNED está disponible para simplificar esta tarea.
¡EDICIÓN IMPORTANTE!
Nunca use REASSIGN OWNED
cuando el rol original es postgres
, esto podría dañar toda su instancia de base de datos. El comando actualizará todos los objetos con un nuevo propietario, incluidos los recursos del sistema (postgres0, postgres1, etc.)
Primero, conéctese a la base de datos de administración y actualice la propiedad de la base de datos:
psql
postgres=# REASSIGN OWNED BY old_name TO new_name;
Este es un equivalente global del ALTER DATABASE
comando proporcionado en la respuesta de Frank, pero en lugar de actualizar un DB en particular, cambia la propiedad de todos los DB propiedad de 'old_name'.
El siguiente paso es actualizar la propiedad de las tablas para cada base de datos:
psql old_name_db
old_name_db=# REASSIGN OWNED BY old_name TO new_name;
Esto debe realizarse en cada base de datos propiedad de 'old_name'. El comando actualizará la propiedad de todas las tablas en la base de datos.
postgres
él mismo ... Aprendí eso por las malas.
REASSIGN OWNED
(generalmente porque su propietario es postgres
), consulte los fragmentos en stackoverflow.com/a/2686185/1839209 .