Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 15/11/2013 12:43:44
- Didier Bétored
- Membre
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.
Julien.
https://rjuju.github.io/
Hors ligne
#3 15/11/2013 13:07:52
- Didier Bétored
- Membre
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
- Didier Bétored
- Membre
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
- Didier Bétored
- Membre
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 ;
Julien.
https://rjuju.github.io/
Hors ligne
#7 15/11/2013 17:41:36
- Didier Bétored
- Membre
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