我已将.sql文件导入postgres。我创建了一个名为“yaq”的数据库并将其导入数据库。
psql=# grant all privileges on database yaq to Jannat;
postgres@server:~$ psql yaq
psql (9.1.8, server 9.1.9)
Type "help" for help.
yaq=# \dt
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+----------
public | relationalfacts | table | yaq
public | spatial_ref_sys | table | postgres
(2 rows)
yaq=# select * from relationalfacts
yaq-# ;
id | relation | arg1 | arg2 | timebegin | timeend | location | locationlatitude | locationlongitude | primarywitness | context
----+----------+------+------+-----------+---------+----------+------------------+-------------------+----------------+---------
(0 rows)
我认为既然我已授予所有者“yaq”而非“yago”的所有权限,因此我无法阅读该关系。是否有某种方法可以将关系表yaq的读取权限授予用户Jannat?请帮忙
答案 0 :(得分:2)
GRANT ALL ON DATABASE ...
不以递归方式授予该数据库中的模式,函数,表等权限。
GRANT ALL
, DATABASE
授予数据库的USAGE
和CONNECT
权限。就是这样。
要授予对表的权限,请使用表格授权语句之一或GRANT ALL ON ALL TABLES IN SCHEMA ... TO ...
。
有关详细信息,请参阅the PostgreSQL manual on GRANT
。
在GRANT
用户之前,请考虑您是否应该使用几个角色,然后GRANT
用户权限充当这些角色。如果您开始添加更多用户,则在开始时定义角色(组)将为您节省大量麻烦。