1

我已经将一个 .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?请帮忙

4

1 回答 1

2

GRANT ALL ON DATABASE ...不会递归授予对该数据库中的模式、函数、表等的权限。

GRANT ALLfor aDATABASE授予数据库的USAGEandCONNECT权限。就这些。

要授予对表的权限,请使用表授予语句之一或GRANT ALL ON ALL TABLES IN SCHEMA ... TO ....

有关详细信息,请参阅PostgreSQL 手册GRANT

GRANT设置用户之前,请考虑是否应该使用一些角色,然后GRANT设置用户权限以充当这些角色。如果您开始添加更多用户,那么在开始时定义角色(组)将为您节省很多麻烦。

于 2013-05-07T07:13:47.503 回答