170 votes

GRANT SELECT à toutes les tables dans postgresql

Existe-t-il une ligne unique qui accorde le SELECTIONNER les permissions à un nouvel utilisateur postgresql ?

Quelque chose qui mettrait en œuvre le pseudo-code suivant :

GRANT SELECT ON TABLE * TO my_new_user;

2voto

stox Points 41

C'est ce que j'ai utilisé :

psql dbname -tc "select 'grant select on '||relname||' to readonly;' from pg_stat_user_tables" | psql dbname

J'ai l'impression qu'il est plus naturel de faire du formatage et des where-clauses en sql .

1voto

Alex S Points 21

Je travaille avec postgres 8.4 et pour donner tous les privilèges à un utilisateur, faites ce qui suit :

#!/bin/bash

for table in `echo "SELECT schemaname||'.'||relname FROM pg_stat_all_tables WHERE schemaname NOT IN('pg_catalog','pg_toast','information_schema')" | psql -t db `;
do
    echo "grant select on table $table to my_new_user;"
    echo "grant select on table $table to my_new_user;" | psql db
done

0voto

postgresql007 Points 11

Une façon de résoudre ce problème est d'écrire une procédure stockée. malheureusement il n'y a pas de commande "grant everything to all tables" ou autre. vous avez vraiment besoin d'une procédure ou d'un Shell Shell externe peut-être pour faire fonctionner ceci.

0voto

LopSae Points 2189

La solution (en une ligne) script d'Adam Matan est excellente lorsqu'il y a de nombreux schémas, mais elle ne fonctionne pas lorsque les noms de schémas ou de tables contiennent des majuscules ou des caractères spéciaux.

Version modifiée :

#!/bin/bash

for table in `echo "SELECT '\"' || schemaname || '\".\"' || relname || '\"'  FROM pg_stat_user_tables;" | psql -A -t my_database_name`;
do
    echo "GRANT SELECT ON TABLE $table to my_new_user;"
    echo "GRANT SELECT ON TABLE $table to my_new_user;" | psql my_database_name
done

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X