Você encontrou o atalho para definir privilégios para todos os existentes tabelas no esquema fornecido. O manual esclarece:
(mas note queALL TABLES
considera-se que inclui visualizações e mesas estrangeiras ).
Minha ênfase em negrito.
serial
colunas são implementadas com nextval()
em uma sequência como padrão de coluna e, citando o manual:
Para sequências, este privilégio permite o uso docurrval
enextval
funções.
Portanto, se houver
serial
colunas, você também desejará conceder USAGE
(ou ALL PRIVILEGES
) em sequências GRANT USAGE ON ALL SEQUENCES IN SCHEMA foo TO mygrp;
Observação:as colunas de identidade no Postgres 10 ou posterior usam sequências implícitas que não exigem privilégios adicionais. (Considere atualizar
serial
colunas.) E o novo objetos?
Você também estará interessado em
DEFAULT PRIVILEGES
para usuários ou 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 ...;
Isso define privilégios para objetos criados no futuro automaticamente - mas não para objetos pré-existentes.
Os privilégios padrão são somente aplicado a objetos criados pelo usuário alvo (
FOR ROLE my_creating_role
). Se essa cláusula for omitida, o padrão será o usuário atual executando 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 ...;
Observe também que todas as versões do pgAdmin III têm um bug sutil e exibem privilégios padrão no painel SQL, mesmo que não se apliquem à função atual. Certifique-se de ajustar o
FOR ROLE
cláusula manualmente ao copiar o script SQL.