sql >> Database >  >> RDS >> PostgreSQL

Verleen alles op een specifiek schema in de db aan een groepsrol in PostgreSQL

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



  1. MySQL:staat niet in GROUP BY

  2. SQL-zelfstudie voor beginners

  3. Inleiding tot Azure Serverless

  4. SQL Server ELKE Operator uitgelegd