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

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

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

GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;

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

1 ответ

Решение

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

Это отличается с функциями: 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:

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

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

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

Другие вопросы по тегам