Du fandt stenografien til at indstille privilegier for alle eksisterende tabeller i det givne skema. Manualen præciserer:
(men bemærk at ALL TABLES
anses for at omfatte visninger og udenlandske tabeller ).
Fed fremhævelse min. serial
kolonner er implementeret med nextval()
på en sekvens som kolonnestandard og, med henvisning til manualen:
For sekvenser tillader dette privilegium brugen af currval
og nextval
funktioner.
Så hvis der er serial
kolonner, vil du også gerne give USAGE
(eller ALL PRIVILEGES
) på sekvenser
GRANT USAGE ON ALL SEQUENCES IN SCHEMA foo TO mygrp;
Bemærk:Identitetskolonner i Postgres 10 eller nyere bruger implicitte sekvenser, der ikke kræver yderligere privilegier. (Overvej at opgradere serial
kolonner.)
Hvad med ny objekter?
Du vil også være interesseret i DEFAULT PRIVILEGES
for brugere eller skemaer:
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 ...;
Dette angiver automatisk privilegier for objekter, der oprettes i fremtiden - men ikke for allerede eksisterende objekter.
Standardrettigheder er kun anvendt på objekter oprettet af den målrettede bruger (FOR ROLE my_creating_role
). Hvis denne klausul udelades, vil den som standard bruge den aktuelle bruger, der udfører ALTER DEFAULT PRIVILEGES
. For at være eksplicit:
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo GRANT ...;
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo REVOKE ...;
Bemærk også, at alle versioner af pgAdmin III har en subtil fejl og skærm standardrettigheder i SQL-ruden, selvom de ikke gælder for den aktuelle rolle. Sørg for at justere FOR ROLE
klausul manuelt, når SQL-scriptet kopieres.