GRANT a varias tablas al mismo tiempo (Solucionado)

From: jsgarcia(at)seguridad(dot)unam(dot)mx
To: Fernando Hevia <fhevia(at)ip-tel(dot)com(dot)ar>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: GRANT a varias tablas al mismo tiempo (Solucionado)
Date: 2009-12-01 21:10:23
Message-ID: 20091201151023.cuhlopk0iogcwcok@correo.seguridad.unam.mx
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda pgsql-es-fomento

Muchisísimas gracias Fernando. Ya con esto, como tú lo has dicho, pude
resolver mi problema. Lo he adecuado y ha funcionado perfectamente.

Un saludo y muchas gracias de nuevo¡¡¡¡¡¡¡¡¡

___________________________________________________________

Fernando Hevia <fhevia(at)ip-tel(dot)com(dot)ar> ha escrito:

>
>
>> -----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
>
> --
> TIP 5: ¿Has leído nuestro extenso FAQ?
> http://www.postgresql.org/docs/faqs.FAQ.html
>

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2009-12-01 21:31:39 Re: [Spam] Consulta vacuum analyze
Previous Message Alvaro Herrera 2009-12-01 21:03:47 Re: like no me devuelve registros - solucionado

Browse pgsql-es-fomento by date

  From Date Subject
Next Message Alvaro Herrera 2009-12-01 21:37:48 Re: GRANT a varias tablas al mismo tiempo
Previous Message Fernando Hevia 2009-12-01 20:33:27 RE: GRANT a varias tablas al mismo tiempo