Назад | Перейти на главную страницу

Как мне предоставить привилегии select, insert в Postgres на Cygwin?

Как мне предоставить разрешения в Postgres? Я следил за документация, однако это не работает.

$ psql tmadev
psql (9.2.4)
Type "help" for help.

tmadev=# grant all privileges on database tmadev to tma;
GRANT
tmadev=# \z sample
                           Access privileges
 Schema |  Name  | Type  | Access privileges | Column access privileges
--------+--------+-------+-------------------+--------------------------
 public | sample | table |                   |
(1 row)

tmadev=# \q

Chloe@xps /srv/www/htdocs
$ psql -U tma tmadev
psql (9.2.4)
Type "help" for help.

tmadev=> select * from sample limit 2;
ERROR:  permission denied for relation sample
STATEMENT:  select * from sample limit 2;
ERROR:  permission denied for relation sample
tmadev=>
tmadev=> \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 Chloe     | Superuser, Create role, Create DB, Replication | {}
 tma       |                                                | {}

grant all privileges on database... не предоставляет никаких возможных привилегий в пределах база данных, но на это, что намного меньше, чем вы думаете.

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

ГРАНТ {{СОЗДАТЬ | ПОДКЛЮЧИТЬ | ВРЕМЕННЫЙ | TEMP} [, ...] | ВСЕ [ПРИВИЛЕГИИ]} ДЛЯ БАЗЫ ДАННЫХ имя_базы_данных [, ...] ДЛЯ {[ГРУППЫ] имя_роли | PUBLIC} [, ...] [С ОПЦИЕЙ GRANT]

Так grant all privileges on database tmadev to tma эквивалентно:

grant create,connect,temporary  on database tmadev to tma;

Предположительно вы хотите что-то вроде (при подключении к tmadev)

grant all on all tables in schema public to tma;
grant all on all sequences in schema public to tma;
grant all on schema public to tma;

и, возможно, довольно много других.

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