Как мне предоставить разрешения в 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
будет единственным пользователем или группой, которым требуется полный доступ к этой базе данных, гораздо удобнее сделать его владельцем базы данных, и в этом случае у него есть все привилегии в нем, и ни одно из этих прав не требуется.