Postgresql-privileges

提供:Dev Guides
移動先:案内検索

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」がデータベースから削除されたことを示します。