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)

「yago」ではなく所有者「yaq」にすべての権限を付与しているため、関係を読み取ることができないと思います。リレーショナル テーブル yaq の読み取り権限をユーザー Jannat に与える方法はありますか? 助けてください

4

1 に答える 1

2

GRANT ALL ON DATABASE ...そのデータベース内のスキーマ、関数、テーブルなどへの権限を再帰的に付与することはありません。

GRANT ALLfor aは、データベースに対するおよび権限をDATABASE付与します。それだけです。USAGECONNECT

テーブルに対する権限を付与するには、テーブル付与ステートメントまたは のいずれかを使用しますGRANT ALL ON ALL TABLES IN SCHEMA ... TO ...

詳細については、PostgreSQL のマニュアルGRANTを参照してください。

ユーザーに通知する前GRANTに、代わりにいくつかの役割を使用する必要があるかどうかを検討し、GRANTそれらの役割として機能するユーザー権限を付与します。最初に役割 (グループ) を定義しておくと、後でユーザーを追加し始めたときに、多くの手間が省けます。

于 2013-05-07T07:13:47.503 に答える