PostgreSQL ロールを削除する
- 作成日 2022.05.14
- 更新日 2023.01.04
- PostgreSQL
- PostgreSQL
PostgreSQLで、ロールを削除する手順を記述してます。「DROP ROLE」で削除したいロール名(ユーザー名)を指定することで可能です。ロールがスキーマのオーナーだったりする場合は削除できずエラーとなります。
環境
- OS CentOS Stream release 9
- PostgreSQL 15.1
- pgadmin4 6.16
ロールを削除
ロールを削除する場合は、「DROP ROLE」を使用します。
DROP ROLE ロール名
実際に、以下の「foo」というロールを削除してみます。
削除します。
DROP ROLE foo
ユーザーが削除されたか、確認してみます。
select usename from pg_user
実行結果
削除されていることが確認できます。
エラー
「他のオブジェクトが依存していますのでロール”xxx”を削除できません」が発生する場合は、スキーマのオーナーだったり「USAGE」権限や「CREATE」権限が付与されている場合があります。
postgres=# drop role sampleuser;
ERROR: 他のオブジェクトが依存していますのでロール"sampleuser"を削除できません
DETAIL: スキーマpublicの権限
データベースsampleの権限
テーブルfooの権限
テーブルtesttblの権限
テーブルsampleの権限
テーブルsample2の権限
テーブルtestの権限
テーブルjson_testの権限
テーブルsampletblの権限
テーブルhogeの所有者
スキーマの権限の確認は「\dt」で可能です。
sample=# \dt
List of relations
Schema | Name | Type | Owner
--------+-----------+-------+------------
public | foo | table | pgadmin
public | hoge | table | sampleuser
public | json_test | table | pgadmin
public | sample | table | pgadmin
public | sample2 | table | pgadmin
public | sampletbl | table | pgadmin
public | test | table | pgadmin
public | testtbl | table | pgadmin
(8 rows)
この場合は、テーブルを削除するか、全てのテーブルのオーナーを別のロールに変更して、持っている権限を「REVOKE」で削除することでユーザーをできるようになります。
sample=# reassign owned by sampleuser to pgadmin;
REASSIGN OWNED
sample=# REVOKE ALL ON ALL TABLES IN SCHEMA public FROM sampleuser;
REVOKE
sample=# REVOKE create on database sample FROM sampleuser;
REVOKE
sample=# REVOKE USAGE ON SCHEMA public FROM sampleuser;
REVOKE
sample=# REVOKE CREATE ON SCHEMA public FROM sampleuser;
REVOKE
pgadminから削除
pgadminから削除する場合は、対象のロールを右クリックして「削除」を選択します。
アラートが表示されるので「はい」をクリックすると削除されます。
-
前の記事
mongoDB ドキュメント(レコード)検索にand条件を使用する 2022.05.14
-
次の記事
javascript 空の2次元配列作成処理で「for」と「Array.from」と「fill map」のパフォーマンスを計測する 2022.05.14
コメントを書く