Dans PostgreSQL 12 et plus, il est possible de accorder tous les privilèges d'une table dans une base de données à un rôle/utilisateur/compte.
La syntaxe est la suivante :
GRANT ALL ON table_name TO role_name;
Si vous voulez l'accorder à toutes les tables de la base de données alors la syntaxe sera :
GRANT ALL ON ALL TABLES TO role_name;
Si vous voulez l'accorder à toutes les tables d'un schéma de la base de données alors la syntaxe sera :
GRANT ALL ON ALL TABLES IN SCHEMA schema_name TO role_name;
Voici comment j'ai procédé :
Tout d'abord, je me suis connecté au serveur de la base de données Postgres :
psql -U postgres
Sortie
psql (12.6 (Ubuntu 12.6-0ubuntu0.20.04.1))
Type "help" for help.
Ensuite, j'ai créé un utilisateur/rôle/compte de base de données :
CREATE ROLE alice4 WITH LOGIN PASSWORD 'securePass1';
Sortie
CREATE ROLE
Ensuite, j'ai créé une table dans la base de données postgres :
create table candidates (
candidate_id int generated always as identity,
first_name varchar(100) not null,
last_name varchar(100) not null,
email varchar(255) not null unique,
phone varchar(25) not null,
primary key(candidate_id)
);
Sortie
CREATE TABLE
Ensuite, j'ai accordé tous les privilèges sur le candidates
au compte/utilisateur/rôle alice4
GRANT ALL ON candidates TO alice4;
Sortie
GRANT
Ensuite, je me suis déconnecté de la base de données postgres et de l'application postgres
compte/utilisateur/rôle :
exit
Ensuite, je me suis connecté à la base de données Postgres à l'aide de l'utilitaire alice4
compte/utilisateur/rôle :
psql -U alice4 -W postgres
Sortie
Password:
psql (12.6 (Ubuntu 12.6-0ubuntu0.20.04.1))
Type "help" for help.
Ensuite, j'ai inséré des données dans le candidates
qui a été créé précédemment :
INSERT INTO candidates(first_name, last_name, email, phone)
VALUES('Joe','Com','joe.com@example.com','408-111-2222');
Sortie
INSERT 0 1
Ensuite, j'ai sélectionné toutes les données dans le candidates
qui a été créé précédemment :
SELECT * FROM candidates;
Sortie
candidate_id | first_name | last_name | email | phone
--------------+------------+-----------+---------------------+--------------
1 | Joe | Com | joe.com@example.com | 408-111-2222
(1 row)
Ressources : PostgreSQL GRANT
C'est tout.
J'espère que cela vous aidera