03 июл. 2012 г., 02:30 отErwin BrandstetterCerin

Как предоставить все права на представления произвольному пользователю

Как вы предоставляете доступ на чтение / выбор для всех функций и представлений произвольному пользователю?

я используюpsql --user=postgres -d mydb -f myview.sql создать несколько функций и представлений, а затем я запускаю:

<code>GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
</code>

Получив все привилегии, я ожидалmyuser теперь иметь доступ к функциям и представлениям, созданнымpostgres пользователь. Тем не менее, когда я пытаюсь получить к ним доступ сmyuser, Я получил разрешение "Отказано в связи ..." ошибка. Почему это?

Ответы на вопрос(0)

23 мая 2017 г., 14:25 отCommunityErwin Brandstetter

что вам нужны дополнительные привилегии для доступа к представлению или таблице. Привилегии в базе данных не распространяются на доступ ко всем объектам в ней.

Это отличается от функций:EXECUTE привилегия предоставляетсяpublic по умолчанию.But функция выполняется с правами текущего пользователя. Вы можете быть заинтересованы вSECURITY DEFINER модификатор дляCREATE FUNCTION, Но обычно этого достаточно, чтобыSELECT на задействованных столах.

В документации о привилегиях по умолчанию:

Depending on the type of object, the initial default privileges might include granting some privileges to PUBLIC. The default is no public access for tables, columns, schemas, and tablespaces; CONNECT privilege and TEMP table creation privilege for databases; EXECUTE privilege for functions; and USAGE privilege for languages.

Вас может заинтересовать эта команда DDL (требуется Postgres9.0 или позже):

GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;

При подключении к рассматриваемой базе данных, конечно (см.комментарий @ marcel'а ниже), и как пользователь с достаточными привилегиями. Вы также можете быть заинтересованы в настройкеDEFAULT PRIVILEGES:

Grant all on a specific schema in the db to a group role in PostgreSQL

Более подробный ответ, как управлять привилегиями:

How to manage DEFAULT PRIVILEGES for USERs on a DATABASE vs SCHEMA?

pgAdmin имеет функцию для более сложных массовых операций:

enter image description here

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

ВАШ ОТВЕТ НА ВОПРОС