From: | "Fernando Hevia" <fhevia(at)ip-tel(dot)com(dot)ar> |
---|---|
To: | <jsgarcia(at)seguridad(dot)unam(dot)mx>, <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | RE: GRANT a varias tablas al mismo tiempo |
Date: | 2009-12-01 20:33:27 |
Message-ID: | F68D55A21E5A4292B4CC8C06E26B6E43@iptel.com.ar |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda pgsql-es-fomento |
> -----Mensaje original-----
> De: jsgarcia(at)seguridad(dot)unam(dot)mx
>
> Hola muchachos, espero que todos estén muy bien.
>
> Como esto de estar dando privilegios tabla por tabla resulta
> muy tedioso cuando se necesita hacer un ALL PRIVILEGES sobre
> todas las tablas de nuestra base, se me ha ocurrido hacer una
> query así:
>
> GRANT ALL PRIVILEGES ON (SELECT viewname FROM pg_views
> WHERE schemaname='public'
> UNION
> SELECT tablename FROM pg_tables WHERE schemaname='public'
> UNION
> SELECT relname FROM pg_statio_all_sequences WHERE
> schemaname='public') TO prueba_permisos;
>
> Quizá algunos ya se imaginen que no sirvió :(
>
> Hay alguna forma de que esta query sí pueda servir? o más
> bien que se construya una que haga lo que deseo?????
>
Esta función te lo resuelve:
CREATE OR REPLACE FUNCTION grant_all_privileges(p_user text, p_schema text)
RETURNS void AS
$BODY$
DECLARE
objeto text;
BEGIN
FOR objeto IN
SELECT tablename FROM pg_tables WHERE schemaname = p_schema
UNION
SELECT relname FROM pg_statio_all_sequences WHERE schemaname =
p_schema
LOOP
RAISE NOTICE 'Asignando todos los privilegios a % sobre %.%', p_user,
p_schema, objeto;
EXECUTE 'GRANT ALL PRIVILEGES ON ' || p_schema || '.' || objeto || '
TO ' || p_user ;
END LOOP;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
La usas así:
select grant_all_privileges('postgres', 'temp');
Saludos,
Fernando
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2009-12-01 21:02:19 | Re: Alias de más 63 caracteres |
Previous Message | (Syswarp) Carlos Enrique Perez | 2009-12-01 19:41:32 | Script de creacion de usuario y base de datos |
From | Date | Subject | |
---|---|---|---|
Next Message | jsgarcia | 2009-12-01 21:10:23 | GRANT a varias tablas al mismo tiempo (Solucionado) |
Previous Message | jsgarcia | 2009-12-01 18:34:52 | GRANT a varias tablas al mismo tiempo |