Table des matières

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';