Подтвердить что ты не робот

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

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

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

GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;

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

4b9b3361

Ответ 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 имеет функцию более сложных операций с массой:

enter image description here

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