Как создать пользователя только для чтения в PostgreSQL? - PullRequest
368 голосов
/ 17 апреля 2009

Я бы хотел создать пользователя в PostgreSQL, который может делать SELECT только из конкретной базы данных. В MySQL команда будет:

GRANT SELECT ON mydb.* TO 'xxx'@'%' IDENTIFIED BY 'yyy';

Что такое эквивалентная команда или серия команд в PostgreSQL?

Я пытался ...

postgres=# CREATE ROLE xxx LOGIN PASSWORD 'yyy';
postgres=# GRANT SELECT ON DATABASE mydb TO xxx;

Но, похоже, вы можете предоставить в базе данных только CREATE, CONNECT, TEMPORARY и TEMP.

Ответы [ 11 ]

0 голосов
/ 27 октября 2011

взято по ссылке, опубликованной в ответ на ссылку despesz '.

Postgres 9.x обладает способностью делать то, что запрашивается. См. Пункт «Предоставление объектов базы данных»:

http://www.postgresql.org/docs/current/interactive/sql-grant.html

Где говорится: «Существует также возможность предоставления привилегий всем объектам одного типа в одной или нескольких схемах. В настоящее время эта функция поддерживается только для таблиц, последовательностей и функций (но учтите, что считается ВСЕ СТОЛЫ включить представления и сторонние таблицы). "

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

Также представлена ​​информация о сравнении функций GRANT со стандартами SQL.

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