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

Sådan giver du alle privilegier på visninger til vilkårlige brugere

Årsagen er, at du har brug for yderligere privilegier for at få adgang til en visning eller tabel. Privilegier på databasen dækker ikke adgang til alle objekter i den.

Det er anderledes med funktionerne:EXECUTE privilegium er givet til public som standard. Men funktionen udføres med den aktuelle brugers privilegier. Du kan være interesseret i SECURITY DEFINER modifikator for CREATE FUNCTION . Men normalt er det nok at give SELECT på involverede borde.

Per dokumentation om standardrettigheder:

Afhængigt af typen af ​​objekt kan de oprindelige standardprivilegier omfatte tildeling af nogle privilegier til PUBLIC . Standarden er ingen offentlig adgang til tabeller, kolonner, skemaer og tablespaces; CONNECT privilegium og TEMP rettigheder til oprettelse af tabel for databaser; EXECUTE privilegium til funktioner; og USAGE privilegium til sprog.

Du kan være interesseret i denne DDL-kommando (kræver Postgres 9.0 eller senere):

GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;

Mens du er forbundet til den pågældende database, selvfølgelig (se @marcels kommentar nedenfor), og som bruger med tilstrækkelige privilegier. Du kan også være interesseret i indstillingen DEFAULT PRIVILEGES :

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

Mere detaljeret svar på, hvordan man administrerer privilegier:

  • Hvordan administrerer man STANDARDPRIVILEGIER for BRUGERE på en DATABASE vs. SCHEMA?

pgAdmin har en funktion til mere sofistikerede masseoperationer:

Eller du kan forespørge systemkatalogerne for at oprette DDL-erklæringer til massetildeling/tilbagekaldelse ...




  1. Hvordan kan jeg få enum mulige værdier i en MySQL-database?

  2. Indsamlingsmetode:FØRSTE OG NÆSTE funktioner i Oracle-databasen

  3. Gyldige tidsstrengformater for SQLite dato/tidsfunktioner

  4. Data Warehousing ETL Data Profiling med Oracle Warehouse Builder