Создание read-only пользователя для большого кол-ва таблиц

Ответить
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Создание read-only пользователя для большого кол-ва таблиц

Сообщение Максим Дубинин » 23 май 2010, 21:07

Мне надо дать доступ пользователю 'guest' сразу ко многим таблицам в некой базе.

На stackoverflow дают такой пример:

Код: Выделить всё

SELECT 'GRANT SELECT ON ' || relname || ' TO xxx;'
FROM pg_class JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace
WHERE nspname = 'public' AND relkind IN ('r', 'v')
Вместо xxx я подставляю guest, это понятно. А что с остальным делать - не очень. Что такое relname? Надо ли его на что-то менять? Расшифруйте, будьте любезны.
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Создание read-only пользователя для большого кол-ва таблиц

Сообщение Denis Rykov » 23 май 2010, 21:18

relname - поле служебной таблицы pg_class. Ничего менять не надо.
Приведенный скрипт сгенерирует список SQL команд, которые потом нужно будет выполнить.
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Создание read-only пользователя для большого кол-ва таблиц

Сообщение Максим Дубинин » 23 май 2010, 22:01

Спасибо, так и есть, ниже строчки с которыми запускается и работает как надо. Выражение это хитрое сохранено в grant-select.sql. Средняя часть нужна чтобы убрать служебные строки и оставить только GRANT'ы.

Код: Выделить всё

psql -U pgsql -d mydatabase -f grant-select.sql | tail +3 | sed 'N;$!P;$!D;$d' > res2.sql
psql -U pgsql -d mydatabase -f res2.sql
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Создание read-only пользователя для большого кол-ва таблиц

Сообщение Denis Rykov » 23 май 2010, 22:21

Чтобы не городить такие конструкции, попробуй запустить psql с ключом -t.
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Создание read-only пользователя для большого кол-ва таблиц

Сообщение Максим Дубинин » 23 май 2010, 22:29

ну вот, а я чуть head не сломал об tail ;) так конечно проще:

Код: Выделить всё

psql -t -U pgsql -d mydatabase -f grant-select.sql > res.sql
psql -U pgsql -d mydatabase -f res.sql
пристегивайтесь, турбулентность прямо по курсу

Ответить

Вернуться в «PostGIS/PostgreSQL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 12 гостей