Как предоставить определенные привилегии всем таблицам в базе данных? - PullRequest
4 голосов
/ 03 сентября 2011

Мне нужно что-то похожее на GRANT SELECT ON db.* TO user mysql в postgresql 8.4. Решения, которые я нахожу в Интернете, используют цикл for для одновременного выбора таблиц и предоставления им привилегий. Но это означало бы, что мне придется повторять команду каждый раз, когда в базу данных добавляется новая таблица.

Есть ли более простое решение для этого?

Ответы [ 3 ]

8 голосов
/ 07 августа 2013

Если у вас нет определенных определенных схем, все ваши таблицы будут в «публичной» схеме, поэтому вы можете сказать:

GRANT <permissions> ON ALL TABLES IN SCHEMA public TO <roles>;

Это работает только на 9.0 или выше, так что вам не повезло в 8.4.

Смотри также: http://www.postgresql.org/docs/8.4/static/ddl-schemas.html

3 голосов
/ 04 сентября 2011

Обратите внимание, что часто предоставление прав определенного пользователя другому пользователю имеет столько же или больше смысла и его легче отслеживать.

create user dbuser9;
create database test9 with owner dbuser9;
\c test9 dbuser9
create a bunch of stuff...
\c postgres postgres
grant dbuser9 to stan;
2 голосов
/ 03 сентября 2011

Права доступа по умолчанию пришли с версией 9.0, она недоступна в более старых версиях.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...