Je hebt de afkorting gevonden om privileges in te stellen voor alle bestaande tabellen in het gegeven schema. De handleiding verduidelijkt:
(maar merk op dat
ALL TABLES
wordt geacht weergaven te bevatten en buitenlandse tafels ).
Vetgedrukte nadruk van mij. serial
kolommen zijn geïmplementeerd met nextval()
op een reeks als standaardkolom en, de handleiding citerend:
Voor reeksen staat dit privilege het gebruik van de
currval
. toe ennextval
functies.
Dus als er serial
. zijn kolommen, wilt u ook USAGE
(of ALL PRIVILEGES
) op reeksen
GRANT USAGE ON ALL SEQUENCES IN SCHEMA foo TO mygrp;
Opmerking:identiteitskolommen in Postgres 10 of later gebruiken impliciete reeksen waarvoor geen extra bevoegdheden nodig zijn. (Overweeg om serial
te upgraden kolommen.)
Hoe zit het met nieuw objecten?
U zult ook geïnteresseerd zijn in DEFAULT PRIVILEGES
voor gebruikers of schema's:
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 ...;
Hiermee worden automatisch privileges ingesteld voor objecten die in de toekomst worden gemaakt, maar niet voor reeds bestaande objecten.
Standaardrechten zijn alleen toegepast op objecten die zijn gemaakt door de beoogde gebruiker (FOR ROLE my_creating_role
). Als die clausule wordt weggelaten, wordt standaard de huidige gebruiker gebruikt die ALTER DEFAULT PRIVILEGES
uitvoert . Om expliciet te zijn:
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo GRANT ...;
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo REVOKE ...;
Merk ook op dat alle versies van pgAdmin III een subtiele bug hebben en weergave standaardprivileges in het SQL-venster, zelfs als ze niet van toepassing zijn op de huidige rol. Zorg ervoor dat u de FOR ROLE
. aanpast clausule handmatig bij het kopiëren van het SQL-script.