PostgreSQLでの権限付与と削除について
GRANTによる権限の付与
PostgreSQLでは、ユーザーやロールに対してさまざまな権限を付与できます。これにより、ユーザーがデータベース内でどのような操作を実行できるかを制御します。
一般的な使用方法は、GRANT
文を使って権限を付与することです。基本的な構文は次のようになります:
GRANT 権限 ON 対象テーブル TO ユーザー;
例えば、employees
というテーブルに対して、ユーザーjohn
に対してSELECT
権限を付与する場合は次のように記述します:
GRANT SELECT ON employees TO john;
この場合、john
はemployees
テーブルのデータを参照することができるようになります。
他にも、以下のような権限があります:
SELECT
– データの読み取り(SELECT文の実行)INSERT
– データの挿入(INSERT文の実行)UPDATE
– データの更新(UPDATE文の実行)DELETE
– データの削除(DELETE文の実行)ALL PRIVILEGES
– 上記すべての権限
例えば、SELECT
とINSERT
の権限を付与する場合は次のようになります:
GRANT SELECT, INSERT ON employees TO john;
また、ALL PRIVILEGES
を使ってすべての権限を一度に付与することもできます:
GRANT ALL PRIVILEGES ON employees TO john;
さらに、権限は複数のユーザーに同時に付与することも可能です:
GRANT SELECT, INSERT ON employees TO john, mary;
これにより、john
とmary
の両方にemployees
テーブルに対するSELECT
およびINSERT
の権限が付与されます。
REVOKEによる権限の削除
PostgreSQLでは、付与した権限を後から削除することもできます。この場合はREVOKE
文を使用します。
基本的な構文は次のようになります:
REVOKE 権限 ON 対象テーブル FROM ユーザー;
例えば、ユーザーjohn
からemployees
テーブルに対するSELECT
権限を削除する場合は次のように記述します:
REVOKE SELECT ON employees FROM john;
これにより、john
はemployees
テーブルに対する参照(SELECT)ができなくなります。
同様に、SELECT
とINSERT
権限を削除する場合は次のように記述します:
REVOKE SELECT, INSERT ON employees FROM john;
また、すべての権限を削除する場合はALL PRIVILEGES
を使用します:
REVOKE ALL PRIVILEGES ON employees FROM john;
重要なのは、REVOKE
文を実行した時点で、削除された権限は即座に反映され、ユーザーがその操作を実行できなくなる点です。
もし、すべてのユーザーから権限を削除したい場合は、次のように記述することができます:
REVOKE ALL PRIVILEGES ON employees FROM PUBLIC;
PUBLIC
は、すべてのユーザーを指す特別なキーワードであり、これを使うことで、データベース内のすべてのユーザーから権限を削除できます。