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