Crear un nuevo usuario de solo lectura en postgres

9

Me gustaría crear un nuevo usuario en una postgresqlbase de datos existente en una máquina Ubuntu. Quiero otorgar a este usuario un acceso de solo lectura a todas las tablas.

¿Cómo lo hago? ¿También necesito crear un nuevo usuario en Ubuntu?

Gracias,

Udi

Adam Matan
fuente

Respuestas:

20

¡Referencia tomada de este artículo!

Script para crear usuario de solo lectura:

CREATE ROLE Read_Only_User WITH LOGIN PASSWORD 'Test1234' 
NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION VALID UNTIL 'infinity';

Asigne permiso a este usuario de solo lectura:

GRANT CONNECT ON DATABASE YourDatabaseName TO Read_Only_User;
GRANT USAGE ON SCHEMA public TO Read_Only_User;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO Read_Only_User;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO Read_Only_User;
Anvesh
fuente
¡Impresionante! Una nueva respuesta relevante después de más de 6 años.
Adam Matan
Vale la pena. Este fue el enlace principal para mí cuando buscaba "crear un usuario de solo lectura en Postgres". El artículo principal que tiene un ejemplo relevante es una victoria en mi libro.
Audrius
3

No es necesario crear un nuevo usuario en el sistema operativo. Solo emite:

CREAR USUARIO newusername

en psql (o pgadmin, o cualquier herramienta que prefiera) y tendrá un nuevo usuario. El acceso que tiene este usuario depende de para qué están configuradas sus tablas. Pero por defecto, no tendrá permisos en ninguna tabla, por lo que tendrá que OTORGARLO. Si ya ha CONCEDIDO permisos para el grupo público, el usuario tendrá esos permisos desde el principio.

Magnus Hagander
fuente