De reden is dat u extra privileges nodig heeft om toegang te krijgen tot een weergave of tabel. Rechten op de database dekken niet de toegang tot alle objecten erin.
Het is anders met functies:EXECUTE privilege wordt verleend aan public standaard. Maar de functie wordt uitgevoerd met de privileges van de huidige gebruiker. Mogelijk bent u geïnteresseerd in de SECURITY DEFINER modifier voor CREATE FUNCTION . Maar normaal gesproken is het voldoende om SELECT op betrokken tafels.
Per documentatie over standaardrechten:
Afhankelijk van het type object, kunnen de aanvankelijke standaardprivileges het toekennen van enkele privileges aan
PUBLIComvatten . De standaard is geen openbare toegang voor tabellen, kolommen, schema's en tabelruimten;CONNECTprivilege enTEMPprivilege voor het maken van tabellen voor databases;EXECUTEprivilege voor functies; enUSAGEprivilege voor talen.
Mogelijk bent u geïnteresseerd in deze DDL-opdracht (vereist Postgres 9.0 of later):
GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;
Verbonden met de betreffende database natuurlijk (zie de opmerking van @marcel hieronder), en als gebruiker met voldoende privileges. Mogelijk bent u ook geïnteresseerd in de instelling DEFAULT PRIVILEGES :
- Alles op een specifiek schema in de db toekennen aan een groepsrol in PostgreSQL
Meer gedetailleerd antwoord over het beheren van privileges:
- Hoe STANDAARDPRIVILEGES voor GEBRUIKERS beheren op een DATABASE versus SCHEMA?
pgAdmin heeft een functie voor meer geavanceerde bulkbewerkingen:

Of u kunt de systeemcatalogi doorzoeken om DDL-instructies te maken voor bulktoekenning / intrekking ...