sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man beviljar alla privilegier på vyer till godtyckliga användare

Anledningen är att du behöver ytterligare privilegier för att komma åt en vy eller tabell. Behörigheter på databasen täcker inte åtkomst till alla objekt i den.

Det är annorlunda med funktionerna:EXECUTE privilegium ges till public som standard. Men funktionen exekveras med den aktuella användarens privilegier. Du kanske är intresserad av SECURITY DEFINER modifierare för CREATE FUNCTION . Men normalt räcker det med att ge SELECT på inblandade bord.

Enligt dokumentation om standardbehörigheter:

Beroende på typen av objekt kan de ursprungliga standardbehörigheterna innefatta att bevilja vissa privilegier till PUBLIC . Standard är ingen offentlig åtkomst för tabeller, kolumner, scheman och tabellutrymmen; CONNECT privilegium och TEMP privilegium för att skapa tabeller för databaser; EXECUTE privilegium för funktioner; och USAGE behörighet för språk.

Du kanske är intresserad av detta DDL-kommando (kräver Postgres 9.0 eller senare):

GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;

Medan du är ansluten till databasen i fråga, naturligtvis (se @marcels kommentar nedan), och som en användare med tillräckliga privilegier. Du kanske också är intresserad av inställningen DEFAULT PRIVILEGES :

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

Mer detaljerat svar på hur man hanterar privilegier:

  • Hur hanterar man DEFAULT PRIVILEGES för ANVÄNDARE på en DATABAS kontra SCHEMA?

pgAdmin har en funktion för mer sofistikerade bulkoperationer:

Eller så kan du fråga systemkatalogerna för att skapa DDL-satser för masstillstånd/återkallande ...




  1. Hur genererar jag kapslade json-objekt med inbyggda mysql-json-funktioner?

  2. Jämföra Galera Cluster Cloud-erbjudanden:Del två Google Cloud Platform (GCP)

  3. UUID kollisionsrisk med hjälp av olika algoritmer

  4. Kan inte ansluta till PostgreSQL med PHP pg_connect()