PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 15/11/2013 12:43:44

Ajout de droits sur l'ensemble des tables d'un schéma

Bonjour,

j'ai trouvé deux réponses à cette question mais ça ne semble pas fonctionner.

soit je lance cette requête dans la fenêtre SQL d'un phppgadmin (en tant que simple user car sur ce lien : http://www.postgresqlfr.org/support:tru … _un_schema   on ne me dit pas de faire autrement (enfin un simple user qui a tous les droits qd meme))

SELECT 'GRANT SELECT ON '||table_schema||'.'||table_name||' TO userpg;' FROM   information_schema.TABLES WHERE  table_type='BASE TABLE' AND    table_schema='nom_schema';

ça ne me jette pas mais ça ne fait rien

Soit je lance celle-ci

/usr/local/pgsql/bin/psql -h /var/run/postgresql -qAt -c "select 'grant select on ' || tablename || ' to userpg;' from pg_tables where schemaname = 'nom_schema'" nombase |psql nombase

trouvée là :
http://trac.evolix.net/infogerance/wiki/HowtoPostgreSQL

et là, ça me demande le mot de passe de postgres que bien sûr je n'ai pas à connaitre.
Cette ligne de commande est lancée dans un terminal où je suis entré en root puis passé en su postgres.

Qqun a t'il une idée de ce que je rate ?

ou une autre solution ...

Peut-être que ce que je prends pour des noms de tables système  est en fait des noms à changer ...

merci d'avance

DB

j'ai remplacé mes vrais par userpg,  nom_schema,  nombase uniquement pour ces 3 valeurs. J'ai réellement tapé le reste tel que ...

Dernière modification par Didier Bétored (15/11/2013 12:44:43)

Hors ligne

#2 15/11/2013 12:58:33

rjuju
Administrateur

Re : Ajout de droits sur l'ensemble des tables d'un schéma

Bonjour,

est-ce que la première partie de la commande marche ? Si oui ajoutez également le -h /var/run/postgresql pour la seconde partie.

Hors ligne

#3 15/11/2013 13:07:52

Re : Ajout de droits sur l'ensemble des tables d'un schéma

Oui : excusez moi, j'avais aussi effectivement un message d'erreur dans cette version

Avec celles ci :

/usr/local/pgsql/bin/psql -h /var/run/postgresql -qAt -c "select 'grant select on ' || tablename || ' to nwazen;' from pg_tables where schemaname = 'meta'" URUEFM_divers

/usr/local/pgsql/bin/psql -h /var/run/postgresql -qAt -c "select 'grant select on ' || tablename || ' to nwazen;' from pg_tables where schemaname = 'meta'" URUEFM_divers |/usr/local/pgsql/bin/psql -h /var/run/postgresql URUEFM_divers


J'arrive à la demande du mot de passe sans injure particulière

J'ai fait un copier coller exact ne voyant pas de risque à le faire

et merci pour la réponse

Ne saisissant pas l'interet de la fin de la requête, j'ai tenté les deux versions pour voir l'effet ...

Dernière modification par Didier Bétored (15/11/2013 13:11:25)

Hors ligne

#4 15/11/2013 17:06:46

Re : Ajout de droits sur l'ensemble des tables d'un schéma

pour info, le select marche bien :

select 'grant select on ' || tablename || ' to nwazen;' from pg_tables where schemaname = 'meta'

renvoie

?column?
grant select on traits_animaux to nwazen;
grant select on etudes to nwazen;
grant select on raunkiaer_lifeform to nwazen;
...

donc, c'est plutot l'exécution ensuite qui coince

Des droits manquants sans doute

Hors ligne

#5 15/11/2013 17:15:01

Re : Ajout de droits sur l'ensemble des tables d'un schéma

Bon, ben j'ai finalement trouvé !

J'en suis surpris moi même ...

en fait, les deux exemples identiques trouvés sur le net, travaillent sur des tables dans le schema "public" sous entendu par défaut.

Comme ici je travaille dans un autre schéma, il faut le spécifier en plus

select 'grant select on meta.' || tablename || ' to nwazen;' from pg_tables where schemaname = 'meta'

la liste des commandes générées sort dans la fenetre --> un copier coller et ça roule

Merci à  rjuju de son intervention

DB

Hors ligne

#6 15/11/2013 17:32:18

rjuju
Administrateur

Re : Ajout de droits sur l'ensemble des tables d'un schéma

Je pensais que votre problème venait de l'authentification, pas des requêtes générées.

Un moyen simple pour ne récupérer que les tables utilisateurs avec leurs schémas est d'utiliser pg_stat_user_tables. Par exemple :

SELECT 'GRANT SELECT ON ' || quote_ident(schemaname) || '.' || quote_ident(relname) || ' to nwazen;' FROM pg_stat_user_tables ;

Hors ligne

#7 15/11/2013 17:41:36

Re : Ajout de droits sur l'ensemble des tables d'un schéma

Effectivement : un WHERE en plus pour ne travailler que sur un seul schéma et ça correspond tout à fait à mon besoin.

En fait, quand ça ne marchait pas, je ne savais pas vraiment ce que je devais attendre de ma requête ...

et donc, au vu de l'autre lien, je pensais qu'il fallait les droits postgres.

Ce n'est que quand j'ai pu  voir le résultat partiel du select, que j'ai compris qu'on ne modifiait pas "en force" le contenu des tables systèmes mais que l'on voulait générer les grant ...

Une fois ça compris, il était simple de voir que le nom du shéma manquait

Quand on manque de bases (sans mauvais jeu de mot), tout devient plus compliqué

merci encore

DB

Dernière modification par Didier Bétored (15/11/2013 17:42:11)

Hors ligne

Pied de page des forums