RE: GRANT a varias tablas al mismo tiempo

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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

Browse pgsql-es-fomento by date

  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