sql >> Databasteknik >  >> RDS >> PostgreSQL

Bevilja alla på ett specifikt schema i db till en grupproll i PostgreSQL

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 och nextval 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.



  1. psql:servern stängde anslutningen oväntat

  2. PL/SQL, hur undkommer man enstaka citattecken i en sträng?

  3. SQLite - Exportera data till en CSV-fil

  4. Hur man konverterar DateTime till VarChar