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!