Hola Federico
Buen dia

Que interesante este tema podrias tu tambien por favor compartir el script
de esto ultimo que mencionas " La reasingación del owner correcto y los
permisos correspondientes se hace a travez de otro script" aprovechando que
ya lo tienes resuelto seria tambien barbaro.

Atentamente

José



El mar., 30 jul. 2019 a las 11:55, Federico Pascual (<
federico.pasc...@gmail.com>) escribió:

> Juan José,
> Hola. Bárbaro che, muchicimas gracias.
> Es exactamente esto lo que quiero, solo voy a exeptuar los usuarios del
> sistema (pg_signal_backend, etc.).
> Pensé por un momento que podía existir alguna alternativa del tipo "...
> from all roles" como decis, pero tu solución se ajusta a lo que queremos
> hacer. La reasingación del owner correcto y los permisos correspondientes
> se hace a travez de otro script que ya está resuelto.
>
> Saludos y muchas gracias nuevamente.
> Federico.
>
> El mar., 30 jul. 2019 a las 13:12, Juan José Santamaría Flecha (<
> juanjo.santama...@gmail.com>) escribió:
>
>> On Tue, Jul 30, 2019 at 3:24 PM Federico Pascual
>> <federico.pasc...@gmail.com> wrote:
>> >
>> > Yo quisiera algo como:
>> >
>> > revoke all privileges on all tables on schema <schema name> from all
>> fucking world;
>> >
>> > Esta es la referencia más cercana que encontré a lo que quiero:
>> >
>> http://www.postgresonline.com/journal/index.php?/archives/221-Bulk-Revoke-of-Permissions-for-Specific-GroupUser-role.html
>> >
>> > Quisiera evitar tener que exportar la db con la cláusula que evita la
>> asignación de permisos para tener que reimportarla.
>> >
>>
>> De la lógica que quieres, la única parte que no puedes hacer en una
>> única instrucción es el 'from all roles'. Tienes que iterar por cada
>> uno de los roles a los que les vas a hacer el 'revoke'. En cualquier
>> caso, te recomendaría no quitar los privilegios a los dueños del
>> esquema.
>>
>> Con SQL encadenado puedes generar las instrucciones. Y con PL/pgSQL
>> puedes automatizarlo:
>>
>> DO $$
>> DECLARE rol record;
>> BEGIN
>>     FOR rol IN
>>         SELECT r.rolname, nsp.nspname
>> FROM pg_roles r
>> CROSS JOIN pg_namespace nsp
>> WHERE nsp.nspowner <> r.oid AND nsp.nspname = '<schema_name>'
>>     LOOP
>>         RAISE NOTICE 'REVOKE ALL ON ALL TABLES IN SCHEMA % FROM %',
>> rol.nspname, rol.rolname;
>>         RAISE NOTICE 'REVOKE ALL ON ALL SEQUENCES IN SCHEMA % FROM %',
>> rol.nspname, rol.rolname;
>>         RAISE NOTICE 'REVOKE ALL ON ALL FUNCTIONS IN SCHEMA % FROM %',
>> rol.nspname, rol.rolname;
>>         --EXECUTE 'REVOKE ALL ON ALL TABLES IN SCHEMA ' ||
>> quote_ident(rol.nspname) || ' FROM ' || quote_ident(rol.rolname);
>>         --EXECUTE 'REVOKE ALL ON ALL SEQUENCES IN SCHEMA ' ||
>> quote_ident(rol.nspname) || ' FROM ' || quote_ident(rol.rolname);
>>         --EXECUTE 'REVOKE ALL ON ALL FUNCTIONS IN SCHEMA ' ||
>> quote_ident(rol.nspname) || ' FROM ' || quote_ident(rol.rolname);
>>     END LOOP;
>> END$$;
>>
>> Asegúrate que esta es la funcionalidad que buscas antes de quitar los
>> comentarios.
>>
>> Un saludo,
>>
>> Juan José Santamaría Flecha
>>
>

-- 
José Mercedes Venegas Acevedo
cel Mov RPC 964185205

Reply via email to