如何在 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...
不会在数据库中授予任何可能的特权,而是授予它,这比您想象的要少得多。根据文档,数据库的权限定义为:
所以
grant all privileges on database tmadev to tma
相当于:大概你想要类似的东西(当连接到
tmadev
)可能还有很多其他人。
另一方面,如果
tma
要成为唯一需要完全访问该数据库的用户或组,则将其设为数据库的所有者会更方便,在这种情况下,它拥有其中的所有权限,而没有这些权限补助金是必要的。