sql >> Database teknologi >  >> RDS >> PostgreSQL

Giv alle på et specifikt skema i db'en til en grupperolle i PostgreSQL

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.



  1. Vælg og rediger lodrette blokke i SQL Server Management Studio ( SSMS) - SQL Server / TSQL selvstudium del 9

  2. Hvordan fjerner du dubletter fra kommasepareret liste med regex i Oracle, men jeg vil ikke have dubletter værdier?

  3. Tjek din SQLite-version

  4. Fejl:ORA-01704:streng for lang