Modifier le propriétaire ou les droits sur les schémas d’une base avec PgAdmin

Pour modifier le propriétaire de tous les objets d’une base en deux étapes, on utilisera les requêtes suivantes qui vont générer automatiquement, pour chaque objet, les requêtes SELECT nécessaires qu’il suffira ensuite d’exécuter à la chaîne dans une nouvelle fenêtre SQL (après avoir supprimé les doubles quotes).

1. Modifier le propriétaire d’un objet

1.1 Tables

SELECT ‘ALTER TABLE ‘|| schemaname || ‘.’ || tablename ||’ OWNER TO my_new_owner;’
FROM pg_tables WHERE NOT schemaname IN (‘pg_catalog’, ‘information_schema’)
ORDER BY schemaname, tablename;

1.2 Séquences

SELECT ‘ALTER SEQUENCE ‘|| sequence_schema || ‘.’ || sequence_name ||’ OWNER TO my_new_owner;’
FROM information_schema.sequences WHERE NOT sequence_schema IN (‘pg_catalog’, ‘information_schema’)
ORDER BY sequence_schema, sequence_name;

1.3 Vues

SELECT ‘ALTER VIEW ‘|| table_schema || ‘.’ || table_name ||’ OWNER TO my_new_owner;’
FROM information_schema.views WHERE NOT table_schema IN (‘pg_catalog’, ‘information_schema’)
ORDER BY table_schema, table_name;

1.4 Vues matérialisées

SELECT ‘ALTER TABLE ‘|| oid::regclass::text ||’ OWNER TO my_new_owner;’
FROM pg_class WHERE relkind = ‘m’
ORDER BY oid;

2. Attribuer ou révoquer des droits

2.1 Sur des tables

2.1.1 GRANT

SELECT ‘GRANT SELECT ON ‘|| table_schema || ‘.’ || table_name ||’ TO group_role;’
FROM information_schema.tables WHERE NOT table_schema IN (‘pg_catalog’, ‘information_schema’)
ORDER BY table_schema, table_name;

2.1.2 REVOKE

SELECT ‘REVOKE SELECT ON ‘|| table_schema || ‘.’ || table_name ||’ FROM group_role;’
FROM information_schema.tables WHERE NOT table_schema IN (‘pg_catalog’, ‘information_schema’)
ORDER BY table_schema, table_name;

2.2 Sur des schémas

2.2.1 GRANT

SELECT ‘GRANT USAGE ON SCHEMA ‘|| schema_name ||’ TO group_role;’
FROM information_schema.schemata
ORDER BY schema_name;

2.2.2 REVOKE

SELECT ‘REVOKE ALL ON SCHEMA ‘|| schema_name ||’ FROM dreal;’
FROM information_schema.schemata
ORDER BY schema_name;

Sources :

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s