PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So gewähren Sie beliebigen Benutzern alle Berechtigungen für Ansichten

Der Grund dafür ist, dass Sie zusätzliche Berechtigungen benötigen, um auf eine Ansicht oder Tabelle zuzugreifen. Berechtigungen für die Datenbank decken nicht den Zugriff auf alle darin enthaltenen Objekte ab.

Anders ist es bei Funktionen:EXECUTE Privileg wird public gewährt standardmäßig. Aber die Funktion wird mit den Rechten des aktuellen Benutzers ausgeführt. Vielleicht interessiert Sie der SECURITY DEFINER Modifikator für CREATE FUNCTION . Aber normalerweise reicht es aus, SELECT zu gewähren auf beteiligten Tabellen.

Per Dokumentation zu Standardprivilegien:

Je nach Objekttyp können die anfänglichen Standardberechtigungen das Gewähren einiger Berechtigungen für PUBLIC umfassen . Der Standardwert ist kein öffentlicher Zugriff für Tabellen, Spalten, Schemas und Tablespaces; CONNECT Privileg und TEMP Tabellenerstellungsprivileg für Datenbanken; EXECUTE Privileg für Funktionen; und USAGE Privileg für Sprachen.

Dieser DDL-Befehl könnte Sie interessieren (erfordert Postgres 9.0 oder später):

GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;

Natürlich während Sie mit der betreffenden Datenbank verbunden sind (siehe Kommentar von @marcel unten) und als Benutzer mit ausreichenden Berechtigungen. Vielleicht interessiert Sie auch die Einstellung DEFAULT PRIVILEGES :

  • Gewähren Sie einer Gruppenrolle in PostgreSQL alle für ein bestimmtes Schema in der Datenbank

Ausführlichere Antwort zum Verwalten von Berechtigungen:

  • Wie verwaltet man STANDARDPRIVILEGIEN für BENUTZER auf einer DATENBANK im Vergleich zu SCHEMA?

pgAdmin hat eine Funktion für anspruchsvollere Massenoperationen:

Oder Sie können die Systemkataloge abfragen, um DDL-Anweisungen für die Massenerteilung/-entziehung zu erstellen ...