Powodem jest to, że potrzebujesz dodatkowych uprawnień, aby uzyskać dostęp do widoku lub tabeli. Uprawnienia w bazie danych nie obejmują dostępu do wszystkich znajdujących się w niej obiektów.
Inaczej jest z funkcjami:EXECUTE uprawnienie jest przyznawane użytkownikowi public domyślnie. Ale funkcja jest realizowana z uprawnieniami aktualnego użytkownika. Być może zainteresuje Cię SECURITY DEFINER modyfikator dla CREATE FUNCTION . Ale normalnie wystarczy przyznać SELECT na zaangażowanych stołach.
Zgodnie z dokumentacją dotyczącą uprawnień domyślnych:
W zależności od typu obiektu, początkowe uprawnienia domyślne mogą obejmować nadanie niektórych uprawnień do PUBLIC . Domyślnie nie ma publicznego dostępu do tabel, kolumn, schematów i obszarów tabel; CONNECT przywilej i TEMP uprawnienia do tworzenia tabel dla baz danych; EXECUTE uprawnienia do funkcji; i USAGE przywilej dla języków.
Możesz być zainteresowany tym poleceniem DDL (wymaga Postgres 9.0 lub później):
GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;
Oczywiście z połączeniem z daną bazą danych (patrz komentarz @marcela poniżej) i jako użytkownik z wystarczającymi uprawnieniami. Możesz być również zainteresowany ustawieniem DEFAULT PRIVILEGES :
- Przyznaj wszystko w określonym schemacie w bazie danych do roli grupowej w PostgreSQL
Bardziej szczegółowa odpowiedź na temat zarządzania uprawnieniami:
- Jak zarządzać DOMYŚLNYMI UPRAWNIENIAMI dla UŻYTKOWNIKÓW BAZ DANYCH a SCHEMATEM?
pgAdmin ma funkcję dla bardziej wyrafinowanych operacji zbiorczych:

Możesz też wysłać zapytanie do katalogów systemowych, aby utworzyć instrukcje DDL do masowego przyznawania / odwoływania ...