Причината е, че имате нужда от допълнителни привилегии за достъп до изглед или таблица. Привилегиите на базата данни не покриват достъпа до всички обекти в нея.
Различно е с функциите: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 изявления за групово предоставяне/отмяна...