Donner globalement des privilèges sur un autre schéma

La norme SQL évolue : tirez le meilleur d'un SGBD qui la respecte en écrivant du SQL moderne avec en complément PL/pgSQL, php, java etc.
Répondre
Phil
Administrateur du site
Messages : 291
Enregistré le : mar. 1 sept. 2015 00:38
Localisation : France
Contact :

Donner globalement des privilèges sur un autre schéma

Message par Phil »

Merci à Guillaume pour sa question :

A partir de la connexion lambda1, je ne peux pas faire de select sur les autres schémas que sont lambda2, lambda3, lambd4
Pouvez-vous faire le nécessaire ? ou me donner la commande pour donner les bons droits ?


Réponse :

Je suppose ici que les règles de https://pgphil.ovh/schemas_10_01.php sont en place, à savoir un schéma par utilisateur portant le même nom que cet utilisateur.
Si tu travailles globalement schéma par schéma, tu peux attribuer des droits en une seule commande sur toutes les tables d’un schéma.
Je le fais par exemple en select sur toutes les tables du schéma lambda2 pour l'utilisateur lambda1 :

Code : Tout sélectionner

select version();
                                                 version
---------------------------------------------------------------------------------------------------------
 PostgreSQL 10.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit
(1 ligne)

-	Connecté lambda1
select count(*) from lambda2.t1;
ERREUR:  droit refusé pour le schéma lambda2
LIGNE 1 : select count(*) from lambda2.t1;

-	Connecté lambda2
grant usage on schema lambda2 to lambda1;
GRANT
note : c’est le droit général d’entrer dans le schema  

grant select on all tables in schema lambda2 to lambda1;
GRANT
note : tables et vues en fait, il est bien sûr aussi possible de travailler table par table
note : la commande "grant select on all tables in schema lambda2 to lambda1;" fonctionne pour toutes les tables actuelles mais si de nouvelles tables sont ajoutées dans le schema lambda2,  il faut la repasser

commit;
COMMIT
note : je valide car le client psql du serveur n’est pas en autocommit, ce n’est pas forcément nécessaire si vos clients ne sont pas configurés de cette manière

-	Connecté lambda1
select count(*) from lambda2.t1;
count
-------
     0
(1 ligne)
Cdlt. Phil - pgphil.ovh
Répondre