PostgreSQL-特権
データベースにオブジェクトが作成されるたびに、所有者がそのオブジェクトに割り当てられます。所有者は通常、作成ステートメントを実行した人です。ほとんどの種類のオブジェクトの場合、初期状態では、所有者(またはスーパーユーザー)のみがオブジェクトを変更または削除できます。他の役割またはユーザーがそれを使用できるようにするには、特権または権限を付与する必要があります。
PostgreSQLのさまざまな種類の特権は次のとおりです。
- SELECT,
- INSERT,
- UPDATE,
- DELETE,
- TRUNCATE,
- REFERENCES,
- TRIGGER,
- CREATE,
- CONNECT,
- TEMPORARY,
- 実行、および
- USAGE
オブジェクトのタイプ(テーブル、関数など)に応じて、特権がオブジェクトに適用されます。ユーザーに特権を割り当てるには、GRANTコマンドを使用します。
GRANTの構文
GRANTコマンドの基本構文は次のとおりです。
GRANT privilege [, ...]
ON object [, ...]
TO { PUBLIC | GROUP group | username }
privilege −値は次のようになります:SELECT、INSERT、UPDATE、DELETE、RULE、ALL。
object−アクセスを許可するオブジェクトの名前。可能なオブジェクトは次のとおりです:テーブル、ビュー、シーケンス
PUBLIC −すべてのユーザーを表す短い形式。
グループ group −特権を付与するグループ。
username−特権を付与するユーザーの名前。PUBLICは、すべてのユーザーを表す短い形式です。
特権は、REVOKEコマンドを使用して取り消すことができます。
REVOKEの構文
REVOKEコマンドの基本的な構文は次のとおりです。
REVOKE privilege [, ...]
ON object [, ...]
FROM { PUBLIC | GROUP groupname | username }
privilege −値は次のようになります:SELECT、INSERT、UPDATE、DELETE、RULE、ALL。
object−アクセスを許可するオブジェクトの名前。可能なオブジェクトは次のとおりです:テーブル、ビュー、シーケンス
PUBLIC −すべてのユーザーを表す短い形式。
グループ group −特権を付与するグループ。
username−特権を付与するユーザーの名前。PUBLICは、すべてのユーザーを表す短い形式です。
例
特権を理解するために、最初に次のようにUSERを作成しましょう-
testdb=# CREATE USER manisha WITH PASSWORD 'password';
CREATE ROLE
メッセージCREATEROLEは、USER "manisha"が作成されたことを示します。
次のようなレコードを持つテーブルCOMPANYについて考えてみます。
testdb# select * from COMPANY;
id | name | age | address | salary
----+-------+-----+-----------+--------
1 | Paul | 32 | California| 20000
2 | Allen | 25 | Texas | 15000
3 | Teddy | 23 | Norway | 20000
4 | Mark | 25 | Rich-Mond | 65000
5 | David | 27 | Texas | 85000
6 | Kim | 22 | South-Hall| 45000
7 | James | 24 | Houston | 10000
(7 rows)
次に、次のように、テーブルCOMPANYのすべての権限をユーザー「manisha」に付与します。
testdb=# GRANT ALL ON COMPANY TO manisha;
GRANT
メッセージGRANTは、すべての特権がUSERに割り当てられていることを示します。
次に、次のようにユーザー「manisha」から特権を取り消しましょう-
testdb=# REVOKE ALL ON COMPANY FROM manisha;
REVOKE
メッセージREVOKEは、すべての特権がUSERから取り消されたことを示します。
次のようにユーザーを削除することもできます-
testdb=# DROP USER manisha;
DROP ROLE
メッセージDROPROLEは、USER'Manisha 'がデータベースから削除されたことを示します。