powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Права доступа
2 сообщений из 2, страница 1 из 1
Права доступа
    #32995411
Arkady Sempliyaroff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно, вопрос чайниковский, но все же.
Имею некую таблицу tbl_nail. Хочу сделать так, чтобы все пользователи НЕ могли просто так вставлять записи в эту таблицу, а должны были бы для этого использовать функцию new_nail.
Делаю следующее от имени владельца базы по имени vasya:

revoke INSERT on tbl_nail from public ;
grant EXECUTE on function new_nail to public ;

Теперь захожу как petya и говорю:

select new_nail ;

И получаю в ответ:

ERROR: доступ запрещен для связи tbl_nail

То есть оно требует наличия привилегии INSERT, даже если вставка выполняется не прямо INSERTом, а изнутри функции.

Это я что-то недокрутил, или это такая фича у PostgreSQL?
Если это фича, то как мне все-таки добиться своего?
...
Рейтинг: 0 / 0
Права доступа
    #32995432
Arkady Sempliyaroff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался сам.
Нужно было создавать функцию с опцией SECURITY DEFINER, тогда функция будет работать с правами владельца функции.
По умолчанию функция создается с опцией SECURITY INVOKER и, соответственно, работает с правами вызывающего пользователя.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Права доступа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]