====== PostgreSQL : Gestion des utilisateurs et droits ======
\\
==== Créer un utilisateur ====
CREATE ROLE test_user LOGIN PASSWORD 'test123';
==== Supprimer un utilisateur ====
DROP ROLE test_user;
==== Changer le mot de passe d'un utilisateur ====
ALTER USER utilisateur WITH PASSWORD 'new_password';
==== Attribuer des droits sur une base à un utilisateur ====
GRANT droit1, droit2,... ON DATABASE base_de_donnees TO utilisateur;
Les droits possibles sont :\\
SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE, USAGE
\\
----
==== Exemples de commandes GRANT ====
=== Dans le schema ref_citoyen pour la table telechargements_appstore ===
- Droits CRUD pour l'utilisateur ref_citoyen
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE ref_citoyen.telechargements_appstore TO ref_citoyen;
- Droit SELECT, REFERENCES, TRIGGER pour l'utilisateur tmabull
GRANT SELECT, REFERENCES, TRIGGER ON TABLE ref_citoyen.telechargements_appstore TO tmabull;
GRANT CONNECT ON DATABASE sde TO test_user;
REVOKE CONNECT ON DATABASE sde FROM test_user;
GRANT USAGE ON SCHEMA archives TO test_user;
REVOKE USAGE ON SCHEMA archives FROM test_user;
GRANT SELECT ON ALL TABLES IN SCHEMA cr_general TO test_user;
REVOKE SELECT ON ALL TABLES IN SCHEMA cr_general FROM test_user;
Pour postgres < 9, il faut donner les doits tables par tables :
SELECT 'GRANT SELECT ON ' || schemaname || '.' || tablename || ' TO toto;' from pg_tables where schemaname = 'archives';