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; PrivilegioCONNECT
y privilegio de creación de tablaTEMP
para bases de datos; PrivilegioEXECUTE
para funciones; y privilegioUSAGE
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 ...