vistas usuario una tabla sobre rol permisos para listar datos dar crear asignar sql database postgresql grant pgadmin

usuario - permisos para crear vistas en sql



Cómo otorgar todos los privilegios en las vistas a un usuario arbitrario (1)

¿Cómo concede acceso de lectura / selección en todas las funciones y vistas a un usuario arbitrario?

Uso psql --user=postgres -d mydb -f myview.sql para crear varias funciones y vistas, y luego ejecuto:

GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;

Habiendo obtenido todos los privilegios, esperaría que mi myuser ahora tenga acceso a las funciones y vistas creadas por el usuario de postgres . Sin embargo, cuando intento acceder a ellos con mi myuser , myuser un error de "permiso denegado para relación ...". ¿Por qué es esto?


El motivo es que necesita privilegios adicionales para acceder a una vista o tabla. Los privilegios en la base de datos no cubren el acceso a todos los objetos en ella.

Es diferente con las funciones: el privilegio EXECUTE se otorga a public de forma predeterminada. Pero la función se ejecuta con los privilegios del usuario actual. Es posible que le interese el modificador SECURITY DEFINER para CREATE FUNCTION . Pero normalmente es suficiente otorgar SELECT en las tablas involucradas.

Por documentación sobre privilegios predeterminados:

Dependiendo del tipo de objeto, los privilegios predeterminados iniciales pueden incluir otorgar algunos privilegios a PUBLIC . El valor predeterminado es no acceso público para tablas, columnas, esquemas y espacios de tablas; Privilegio CONNECT y privilegio de creación de tabla TEMP para bases de datos; Privilegio EXECUTE para funciones; y privilegio USAGE para idiomas.

Puede estar interesado en este comando DDL (requiere Postgres 9.0 o posterior):

GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;

Por supuesto, mientras esté conectado a la base de datos en cuestión (consulte el comentario de @marcel más abajo), y como usuario con suficientes privilegios. También te puede interesar la configuración DEFAULT PRIVILEGES :

Respuesta más detallada sobre cómo administrar privilegios:

pgAdmin tiene una característica para operaciones masivas más sofisticadas:

O puede consultar los catálogos del sistema para crear sentencias DDL para otorgar / revocar en masa ...