PostgreSQL - PRIVILÈGES

Chaque fois qu'un objet est créé dans une base de données, un propriétaire lui est affecté. Le propriétaire est généralement celui qui a exécuté l'instruction de création. Pour la plupart des types d'objets, l'état initial est que seul le propriétaire (ou un super-utilisateur) peut modifier ou supprimer l'objet. Pour permettre à d'autres rôles ou utilisateurs de l'utiliser, des privilèges ou une autorisation doivent être accordés.

Différents types de privilèges dans PostgreSQL sont -

  • SELECT,
  • INSERT,
  • UPDATE,
  • DELETE,
  • TRUNCATE,
  • REFERENCES,
  • TRIGGER,
  • CREATE,
  • CONNECT,
  • TEMPORARY,
  • EXÉCUTER, et
  • USAGE

Selon le type de l'objet (table, fonction, etc.,), des privilèges sont appliqués à l'objet. Pour attribuer des privilèges aux utilisateurs, la commande GRANT est utilisée.

Syntaxe de GRANT

La syntaxe de base de la commande GRANT est la suivante -

GRANT privilege [, ...]
ON object [, ...]
TO { PUBLIC | GROUP group | username }
  • privilege - les valeurs peuvent être: SELECT, INSERT, UPDATE, DELETE, RULE, ALL.

  • object- Le nom d'un objet auquel accorder l'accès. Les objets possibles sont: table, vue, séquence

  • PUBLIC - Un formulaire court représentant tous les utilisateurs.

  • GROUPE group - Un groupe à qui accorder des privilèges.

  • username- Le nom d'un utilisateur auquel accorder des privilèges. PUBLIC est un formulaire abrégé représentant tous les utilisateurs.

Les privilèges peuvent être révoqués à l'aide de la commande REVOKE.

Syntaxe de REVOKE

La syntaxe de base de la commande REVOKE est la suivante -

REVOKE privilege [, ...]
ON object [, ...]
FROM { PUBLIC | GROUP groupname | username }
  • privilege - les valeurs peuvent être: SELECT, INSERT, UPDATE, DELETE, RULE, ALL.

  • object- Le nom d'un objet auquel accorder l'accès. Les objets possibles sont: table, vue, séquence

  • PUBLIC - Un formulaire court représentant tous les utilisateurs.

  • GROUPE group - Un groupe à qui accorder des privilèges.

  • username- Le nom d'un utilisateur auquel accorder des privilèges. PUBLIC est un formulaire abrégé représentant tous les utilisateurs.

Exemple

Pour comprendre les privilèges, créons d'abord un UTILISATEUR comme suit -

testdb=# CREATE USER manisha WITH PASSWORD 'password';
CREATE ROLE

Le message CREATE ROLE indique que l'UTILISATEUR "manisha" est créé.

Considérez la table COMPANY ayant des enregistrements comme suit -

testdb# 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)

Ensuite, accordons tous les privilèges sur une table COMPANY à l'utilisateur "manisha" comme suit -

testdb=# GRANT ALL ON COMPANY TO manisha;
GRANT

Le message GRANT indique que tous les privilèges sont attribués à l'UTILISATEUR.

Ensuite, révoquons les privilèges de l'UTILISATEUR "manisha" comme suit -

testdb=# REVOKE ALL ON COMPANY FROM manisha;
REVOKE

Le message REVOKE indique que tous les privilèges sont révoqués à l'UTILISATEUR.

Vous pouvez même supprimer l'utilisateur comme suit -

testdb=# DROP USER manisha;
DROP ROLE

Le message DROP ROLE indique que USER 'Manisha' est supprimé de la base de données.