, , ,

PostgreSQL : Changer le propriétaire de la base

Si le propriétaire d'origine n'est pas postgres, on peut utiliser la commande REASSIGN OWNED avec la syntaxe suivante:

-- Après avoir sélectionné la base
REASSIGN OWNED BY origin_role
TO dest_role ;

Tous les objets de la base (relation, vues, fonctions etc) sont réassignés au role “dest_role”.

Si la base et les objets qu'elle contient appartiennent à postgres, cette commande n'est pas utilisable.

Dans ce cas, le plus simple est de faire un dump de la base, d'éditer le fichier et de recréer la base.

# Dump de la base 
pg_dump -s DB_NAME > dump.sql

Via vim, on peut modifier le propriétaire “origin_role” des objets via la commande :

:%s/OWNER TO origin_role/OWNER TO dest_role/g

Récréer la base via le dump modifié :

psqL DB_NAME < dump.sql

Références