PostgreSQL : changer le propriétaire d’une base de données

Une méthode un peu bourrine mais qui marche.

  • Se connecter à la base de données voulue
  • copier/coller les lignes suivantes en changeant newuser et éventuellement public.

    \t\a
    \o /tmp/hack.sql
    select 'ALTER '||CASE WHEN relkind='r' THEN 'TABLE' WHEN relkind='S' THEN 'SEQUENCE' WHEN relkind='v' THEN 'VIEW' END ||' '||relname||' OWNER TO newuser;' from pg_class c join pg_namespace ns ON ns.oid=c.relnamespace where relkind in ('r','S','v') and ns.nspname='public' ORDER BY CASE WHEN relkind='r' THEN 1 ELSE 2 END;
    \o
    \i /tmp/hack.sql
    

Enjoy !

Notes :

  • Le ORDER BY est nécessaire pour que les tables soient traitées avant les séquences
  • Je n’ai pas fait les fonctions