Encontraste la abreviatura para establecer privilegios para todos los existentes tablas en el esquema dado. El manual aclara:
(pero tenga en cuenta que ALL TABLES
se considera que incluye vistas y tablas extranjeras ).
Énfasis en negrita mío. serial
las columnas se implementan con nextval()
en una secuencia como columna predeterminada y, citando el manual:
Para secuencias, este privilegio permite el uso de currval
y nextval
funciones.
Entonces, si hay serial
columnas, también querrá conceder USAGE
(o ALL PRIVILEGES
) en secuencias
GRANT USAGE ON ALL SEQUENCES IN SCHEMA foo TO mygrp;
Nota:las columnas de identidad en Postgres 10 o posterior usan secuencias implícitas que no requieren privilegios adicionales. (Considere actualizar serial
columnas.)
¿Qué pasa con nuevo? objetos?
También te interesarán los DEFAULT PRIVILEGES
para usuarios o esquemas:
ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT ALL PRIVILEGES ON TABLES TO staff;
ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT USAGE ON SEQUENCES TO staff;
ALTER DEFAULT PRIVILEGES IN SCHEMA foo REVOKE ...;
Esto establece privilegios para objetos creados en el futuro automáticamente, pero no para objetos preexistentes.
Los privilegios predeterminados son solo aplicado a los objetos creados por el usuario objetivo (FOR ROLE my_creating_role
). Si se omite esa cláusula, por defecto el usuario actual ejecuta ALTER DEFAULT PRIVILEGES
. Para ser explícito:
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo GRANT ...;
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo REVOKE ...;
Tenga en cuenta también que todas las versiones de pgAdmin III tienen un error sutil y display privilegios predeterminados en el panel SQL, incluso si no se aplican al rol actual. Asegúrese de ajustar el FOR ROLE
cláusula manualmente al copiar el script SQL.