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