Причината е, че имате нужда от допълнителни привилегии за достъп до изглед или таблица. Привилегиите на базата данни не покриват достъпа до всички обекти в нея.
Различно е с функциите:EXECUTE привилегията се предоставя на public по подразбиране. Но функцията се изпълнява с привилегиите на текущия потребител. Може да се интересувате от SECURITY DEFINER модификатор за CREATE FUNCTION . Но обикновено е достатъчно да предоставите SELECT на включени маси.
Според документация относно привилегиите по подразбиране:
В зависимост от типа обект, първоначалните привилегии по подразбиране могат да включват предоставяне на някои привилегии на
PUBLIC. По подразбиране няма публичен достъп за таблици, колони, схеми и пространства за таблици;CONNECTпривилегия иTEMPпривилегия за създаване на таблица за бази данни;EXECUTEпривилегия за функции; иUSAGEпривилегия за езици.
Може да се интересувате от тази DDL команда (изисква Postgres 9.0 или по-късно):
GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;
Докато сте свързани с въпросната база данни, разбира се (вижте коментара на @marcel по-долу) и като потребител с достатъчно привилегии. Може също да се интересувате от настройката DEFAULT PRIVILEGES :
- Предоставете всички по конкретна схема в db на групова роля в PostgreSQL
По-подробен отговор как да управлявате привилегиите:
- Как да управлявам ПРАВИЛЕГИИТЕ ПО ПОДРАЗБИРАНЕ за ПОТРЕБИТЕЛИ в БАЗА ДАННИ спрямо СХЕМА?
pgAdmin има функция за по-сложни групови операции:

Или можете да направите заявка към системните каталози, за да създадете DDL изявления за групово предоставяне/отмяна...