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