Postgresql-privileges
PostgreSQL-特権
データベースでオブジェクトが作成されるたびに、所有者が割り当てられます。 所有者は通常、作成ステートメントを実行した人です。 ほとんどの種類のオブジェクトの初期状態では、所有者(またはスーパーユーザー)のみがオブジェクトを変更または削除できます。 他のロールまたはユーザーがそれを使用できるようにするには、_privileges_またはアクセス許可を付与する必要があります。
PostgreSQLのさまざまな種類の権限は-
- SELECT、
- インサート、
- 更新、
- 削除、
- 切り捨て、
- 参考文献、
- 引き金、
- CREATE、
- CONNECT、
- 一時的、
- EXECUTE、および
- 使用法
オブジェクトのタイプ(テーブル、関数など)に応じて、オブジェクトに特権が適用されます。 ユーザーに特権を割り当てるには、GRANTコマンドが使用されます。
GRANTの構文
GRANTコマンドの基本的な構文は次のとおりです-
GRANT privilege [, ...]
ON object [, ...]
TO { PUBLIC | GROUP group | username }
- 特権-値は、SELECT、INSERT、UPDATE、DELETE、RULE、ALLです。
- オブジェクト-アクセスを許可するオブジェクトの名前。 可能なオブジェクトは次のとおりです。テーブル、ビュー、シーケンス
- PUBLIC -すべてのユーザーを表す短い形式。 GROUP group *-特権を付与するグループ。
- username -特権を付与するユーザーの名前。 PUBLICは、すべてのユーザーを表す短い形式です。
特権は、REVOKEコマンドを使用して取り消すことができます。
REVOKEの構文
REVOKEコマンドの基本的な構文は次のとおりです-
REVOKE privilege [, ...]
ON object [, ...]
FROM { PUBLIC | GROUP groupname | username }
- 特権-値は、SELECT、INSERT、UPDATE、DELETE、RULE、ALLです。
- オブジェクト-アクセスを許可するオブジェクトの名前。 可能なオブジェクトは次のとおりです。テーブル、ビュー、シーケンス
- PUBLIC -すべてのユーザーを表す短い形式。 GROUP group *-特権を付与するグループ。
- username -特権を付与するユーザーの名前。 PUBLICは、すべてのユーザーを表す短い形式です。
例
特権を理解するには、まず次のようにユーザーを作成しましょう-
testdb=# CREATE USER manisha WITH PASSWORD 'password';
CREATE ROLE
CREATE ROLEというメッセージは、ユーザー「manisha」が作成されたことを示しています。
次のようなレコードを持つテーブルlink:/postgresql/company.sql [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)
次に、次のようにユーザー「manisha」にテーブルCOMPANYのすべての特権を付与しましょう-
testdb=# GRANT ALL ON COMPANY TO manisha;
GRANT
メッセージGRANTは、すべての特権がユーザーに割り当てられていることを示します。
次に、次のようにユーザー「manisha」から特権を取り消しましょう-
testdb=# REVOKE ALL ON COMPANY FROM manisha;
REVOKE
メッセージREVOKEは、すべての特権がユーザーから取り消されたことを示します。
次のようにユーザーを削除することもできます-
testdb=# DROP USER manisha;
DROP ROLE
メッセージDROP ROLEは、ユーザー「Manisha」がデータベースから削除されたことを示します。