{{tag>application software bdd postgresql}}
====== 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 =====
* [[https://www.postgresql.org/docs/current/sql-reassign-owned.html|Documentation de la commande SQL "REASSIGN OWNED" (postgresql.org) (en)]]
* [[https://stackoverflow.com/questions/1348126/postgresql-modify-owner-on-all-tables-simultaneously-in-postgresql|Comment modifier le propriétaire de toutes les tables (stackoverflow.com) (en)]]