Du hittade förkortningen för att ställa in privilegier för alla befintliga tabeller i det givna schemat. Manualen förtydligar:
(men observera att
ALL TABLES
anses inkludera vyer och utländska tabeller ).
Djärv betoning min. serial
kolumner implementeras med nextval()
på en sekvens som kolumnstandard och, med hänvisning till manualen:
För sekvenser tillåter detta privilegium användning av
currval
ochnextval
funktioner.
Så om det finns serial
kolumner, vill du också ge USAGE
(eller ALL PRIVILEGES
) på sekvenser
GRANT USAGE ON ALL SEQUENCES IN SCHEMA foo TO mygrp;
Obs:identitetskolumner i Postgres 10 eller senare använder implicita sekvenser som inte kräver ytterligare privilegier. (Överväg att uppgradera serial
kolumner.)
Vad sägs om ny objekt?
Du kommer också att vara intresserad av DEFAULT PRIVILEGES
för användare eller scheman:
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 ...;
Detta ställer in privilegier för objekt som skapas i framtiden automatiskt - men inte för redan existerande objekt.
Standardbehörigheter är endast tillämpas på objekt skapade av den inriktade användaren (FOR ROLE my_creating_role
). Om den satsen utelämnas, används som standard för den aktuella användaren som exekverar ALTER DEFAULT PRIVILEGES
. För att vara tydlig:
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo GRANT ...;
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo REVOKE ...;
Observera också att alla versioner av pgAdmin III har en subtil bugg och display standardbehörigheter i SQL-rutan, även om de inte gäller den aktuella rollen. Se till att justera FOR ROLE
klausul manuellt när du kopierar SQL-skriptet.