Générer un Script de création des roles PostgreSQL

Roles postgres

Dans le cas d'une opération de migration d'un serveur PostgreSQL vers un autre il est parfois nécessaire d'industrialiser les opération de transfert des rôles de connexion.

La requête ci dessous permet de lister les rôles utilisés sur le serveur initial afin de pouvoir exécuter simplement une requête de création de ces rôles sur le serveur de destination :

SELECT
'DROP ROLE IF EXISTS '||rolname||';' as nettoyage,
'CREATE ROLE '||rolname||' LOGIN ENCRYPTED PASSWORD '''||rolpassword||''' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;' as creation
FROM pg_authid
WHERE rolcanlogin=true
AND rolname IS DISTINCT FROM 'postgres'
ORDER BY rolname;
Par Christophe HIRON
15 juillet 2019