PostgreSQL PRIVILEGES (Permissions)
Chaque fois qu'un objet de base de données est créé, un propriétaire lui est attribué, qui est généralement la personne qui a exécuté l'instruction CREATE.
Pour la plupart des types d'objets, l'état initial est que seul le propriétaire (ou un superutilisateur) peut modifier ou supprimer l'objet. Pour permettre à d'autres rôles ou utilisateurs de l'utiliser, des autorisations doivent être définies pour cet utilisateur.
Dans PostgreSQL, les privilèges sont divisés en les types suivants :
- SELECT
- INSERT
- UPDATE
- DELETE
- TRUNCATE
- REFERENCES
- TRIGGER
- CREATE
- CONNECT
- TEMPORARY
- EXECUTE
- USAGE
Selon le type d'objet (table, fonction, etc.), les privilèges spécifiés sont appliqués à cet objet.
Pour attribuer des privilèges à un utilisateur, vous pouvez utiliser la commande GRANT.
Syntaxe de GRANT
La syntaxe de base de la commande GRANT est la suivante :
GRANT privilege [, ...]
ON object [, ...]
TO { PUBLIC | GROUP group | username }
- privilege − La valeur peut être : SELECT, INSERT, UPDATE, DELETE, RULE, ALL.
- object − Le nom de l'objet auquel l'accès est accordé. Les objets possibles incluent : table, view, sequence.
- PUBLIC − Représente tous les utilisateurs.
- GROUP group − Accorde des privilèges à un groupe d'utilisateurs.
- username − Le nom de l'utilisateur auquel des privilèges sont accordés. PUBLIC est une forme abrégée représentant tous les utilisateurs.
De plus, nous pouvons utiliser la commande REVOKE pour révoquer des privilèges. La syntaxe de REVOKE :
REVOKE privilege [, ...]
ON object [, ...]
FROM { PUBLIC | GROUP groupname | username }
Exemple
Pour comprendre les privilèges, créez un utilisateur :
exampledb=# CREATE USER example WITH PASSWORD 'password'; CREATE ROLE
Le message CREATE ROLE indique qu'un utilisateur "example" a été créé.
Exemple
Créez la table COMPANY (Téléchargez le fichier SQL COMPANY), avec le contenu des données comme suit :
exampledb# select * from COMPANY; id | name | age | address | salary ----+-------+-----+-----------+-------- 1 | Paul | 32 | California| 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall| 45000 7 | James | 24 | Houston | 10000 (7 rows)
Maintenant, attribuez des privilèges à l'utilisateur "example" :
exampledb=# GRANT ALL ON COMPANY TO example; GRANT
Le message GRANT indique que tous les privilèges ont été attribués à "example".
Ensuite, révoquez les privilèges de l'utilisateur "example" :
exampledb=# REVOKE ALL ON COMPANY FROM example; REVOKE
Le message REVOKE indique que les privilèges de l'utilisateur ont été révoqués.
Vous pouvez également supprimer l'utilisateur :
exampledb=# DROP USER example; DROP ROLE
Le message DROP ROLE indique que l'utilisateur "example" a été supprimé de la base de données.
Autres extensions