Wie setze ich eine Berechtigung auf alle Tabellen einer DB?

Hallo

ich versuche mit einem Script einer Group Role auf allen Tabellen einer DB die Berechtigung setzen.
Mein erster Versuch mit einem Sub-select geht nicht ->
GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE (SELECT tablename FROM pg_tables where tablename not like ‘pg_%’) TO users_group;

Hatte jemand eine Idee wie das zu lösen ist?

Danke und Gruss
Ste

entweder du generierst dir ein script …

z.B. mit dem select erstmal die objekte abfragen -> in ein textfile -> grant-statement davor basteln

oder du nutzt PG-Admin - da ist ein “GRANT Assistent” bei - der mehr oder minder hinreichend gut funktioniert.

ja so mach ich es bisher, wäre aber ein bisschen cooler wenn es automatisch ginge…



17:14 < akretschmer> ??grantall
17:14 < rtfm_please> For information about grantall
17:14 < rtfm_please> see http://pgedit.com/public/sql/acl_admin/index.html
17:14 < rtfm_please> or http://unf.be/postgresql/postgres_grant_all.perl
17:14 < rtfm_please> or http://www.archonet.com/pgdocs/grant-all.html

Andreas

schön schön …

Ich hab jetzt ein Script (abgändertes grantall.sh) das funktioniert. Falls jemand mal das gleiche benötigt:

start of fixperm.sh

#!/bin/bash
SQL=“SELECT tablename FROM pg_tables where tablename not like ‘pg_%’ and tablename not like ‘sql_%’”
OBJ=psql -d DATABASE -t -c "${SQL}" $1
OBJ=echo ${OBJ} | sed 's/EOF//g'
OBJ=echo ${OBJ} | sed 's/ /, /g'
SQL=“GRANT SELECT, UPDATE, INSERT, DELETE ON ${OBJ} TO users_group;”
psql -d DATABASE -c “${SQL}” $1

end of fixperm.sh

Vielen Dank für die Hilfe

greetz
Ste