Gracias Álvaro, agradezco muchísimo tu tiempo para responder. Eso de
la función no se me había ocurrido hasta que Fernando me pasó
realmente el 95% o más de la solución, ya sólo le modifiqué muy poco
de tal forma que me quedó así:
CREATE OR REPLACE FUNCTION grant_all_privileges(p_user text)
RETURNS void AS
$BODY$
DECLARE
objeto text;
BEGIN
FOR objeto IN
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'
LOOP
RAISE NOTICE 'Asignando todos los privilegios a % sobre %.%', p_user,
public, objeto;
EXECUTE 'GRANT ALL PRIVILEGES ON public. ' || objeto || '
TO ' || p_user ;
END LOOP;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
_______________________________________________________________
Alvaro Herrera <alvhe...@alvh.no-ip.org> ha escrito:
jsgar...@seguridad.unam.mx escribió:
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;
Puedes construir una funcion en plpgsql que haga esto usando EXECUTE.
--
Alvaro Herrera Vendo parcela en Valdivia:
http://valdivia.vivastreet.cl/loteos-lotes+valdivia/parcela-en-cabo-blanco--valdivia/19288372
"How strange it is to find the words "Perl" and "saner" in such close
proximity, with no apparent sense of irony. I doubt that Larry himself
could have managed it." (ncm, http://lwn.net/Articles/174769/)
--
TIP 1: para suscribirte y desuscribirte, visita
http://archives.postgresql.org/pgsql-es-ayuda
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
--
TIP 4: No hagas 'kill -9' a postmaster