我如何在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...不授予数据库内的任何可能的特权,但在其上,这比你想象的要less得多。
根据文档 ,数据库的权限定义如下:
授予{{创build| CONNECT | TEMPORARY | TEMP} [,…] | ALL [PRIVILEGES]} ON DATABASE database_name [,…] TO {[GROUP] role_name | PUBLIC} [,…] [授权方式]
所以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将是唯一需要完全访问这个数据库的用户或组,那么使它成为数据库的所有者将会更加方便,在这种情况下,它拥有所有的权限,这些补助金是必要的。