jueves, 30 de septiembre de 2010

PostgreSQL: Para otorgar privilegios a un usuario

PosgreSQL permite crear provilegios por tabla en la base de datos de manera que un usuario en particular pueda crear consultas SELECT pero no pueda ejecutar el resto UPDATE, DELETE, INSERT.. el problema de esto es que pasa si tienes una BD con muchas tablas, tendrias q generar la sentencia grant por cada tabla GRANT SELECT ON TABLE public.table to u_read; para solucionar esto dejo aqui una consulta que genera todas las sentencias GRANT para cada tabla dentro de la BD

select 'GRANT SELECT ON TABLE '||schemaname||'.'||tablename||' TO u_read;' 
from pg_tables 
where schemaname in ('public') order by schemaname, tablename;


Para ver la Referencia.
Referencia de Postgresql Aqui!

3 comentarios:

  1. Gracias!!! me ha sido de gran utilidad... :D

    ResponderEliminar
  2. esa instrucción sería para todos los usuarios?

    ResponderEliminar
    Respuestas
    1. no, solo para el usuario u_read al que se le hace referencia en la consulta...

      Eliminar