Esta cuestión se puede solucionar de diversas formas, pero te enseñamos la solución más completa para nosotros.
Solución:
Estoy de acuerdo en que debería funcionar. con permisos GRANT ... ON ALL TABLES
debe incluir vistas también.
¿Creaste la vista? después concesión de privilegios a testuser
? Si es así, no tiene los mismos privilegios que las otras tablas. Eso es porque GRANT ... ON ALL TABLES
significa “en todas las tablas que existen actualmente”. Para incluir tablas/vistas que cree en el futuro, puede decir:
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO testuser;
O si quieres dar más de SELECT
puedes decir ALL PRIVILEGES
en cambio.
Creo que este comportamiento de ON ALL TABLES
es una de las partes más incomprendidas sobre los permisos de Postgres, y en realidad no se menciona en la documentación estándar, por lo que traté de enfatizarlo en mi propia descripción general de los permisos de Postgres.
postgres=# GRANT ALL PRIVILEGES ON DATABASE testdb TO testuser;
postgres=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO testuser;
GRANT USAGE on schema: GRANT USAGE ON SCHEMA schema_name TO username;
Grant SELECT for a specific table: GRANT SELECT ON tbl_loans_new TO oloffm;
Grant SELECT for multiple tables: GRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO username;
valoraciones y reseñas
Si tienes algún titubeo o forma de refinar nuestro división eres capaz de realizar una observación y con mucho placer lo estudiaremos.