PostgreSQL | ロール(ユーザー) ROLE 作成 | 指定したロールが所有するオブジェクトの所有権を別のロールへ変更(REASSIGN OWNED)

REASSIGN OWNED コマンドを使用して、指定したロールが所有するデータベースオブジェクトの所有権を別のロールに変更する方法について説明する。ロールを削除する前に別のロールへ所有権を変更する場合などに使用される。

オブジェクトの所有権を別のロールに変更する

REASSIGN OWNED コマンドを使用すると、指定したロールがデータベース内で所有しているすべてのデータベースオブジェクトの所有権を別のロールに変更できる。形式は次のとおりである。

REASSIGN OWNED BY old_role [, ...] TO new_role

指定したロール (old_role) が所有するオブジェクトの所有権を別のロール (new_role) に変更する。

直接試してみる。現在 devkuma データベースには、mykuma ロール所有の mykuma スキーマが作成されている。

devkuma=# \dn
 스키마(schema) 목록
   이름   |  소유주
----------+----------
 mykuma   | mykuma
 myschema | postgres
 public   | postgres
(3개 행)


devkuma=#

また、public スキーマには book テーブルが作成されている。

devkuma=# \dt
      릴레이션(relation) 목록
 스키마 | 이름 |  종류  |  소유주
--------+------+--------+----------
 public | blog | 테이블 | postgres
 public | book | 테이블 | mykuma
 public | memo | 테이블 | postgres
(3개 행)


devkuma=#

public スキーマ内の blog テーブルには、mykuma ロールに SELECT 権限が追加されている。

devkuma=# \dp
                                액세스 권한
 스키마 | 이름 |  종류  |        액세스 권한        | 칼럼 접근권한 | 정책
--------+------+--------+---------------------------+---------------+------
 public | blog | 테이블 | postgres=arwdDxt/postgres+|               |
        |      |        | mykuma=r/postgres         |               |
 public | book | 테이블 |                           |               |
 public | memo | 테이블 | postgres=arwdDxt/postgres |               |
(3개 행)


devkuma=#

それでは devkuma データベースで mykuma ロールが所有するオブジェクトの所有権を superkuma ロールに変更してみる。次のように実行する。

devkuma=# reassign owned by mykuma to superkuma;
REASSIGN OWNED
devkuma=#

オブジェクトの所有権が superkuma ロールに変更された。

では mykuma スキーマの所有権を確認してみる。

devkuma=# \dn
 스키마(schema) 목록
   이름   |  소유주
----------+-----------
 mykuma   | superkuma
 myschema | postgres
 public   | postgres
(3개 행)


devkuma=#

mykuma スキーマの所有権が superkuma ロールに変更されていることを確認できる。

次に、public スキーマに作成された book テーブルの所有権を確認する。

devkuma=# \dt
      릴레이션(relation) 목록
 스키마 | 이름 |  종류  |  소유주
--------+------+--------+-----------
 public | blog | 테이블 | postgres
 public | book | 테이블 | superkuma
 public | memo | 테이블 | postgres
(3개 행)


devkuma=#

book テーブルの所有権が superkuma ロールに変更されていることを確認できる。

最後に、public スキーマ内の blog テーブルに mykuma ロールへ追加された権限を確認する。

devkuma=# \dp
                                액세스 권한
 스키마 | 이름 |  종류  |        액세스 권한        | 칼럼 접근권한 | 정책
--------+------+--------+---------------------------+---------------+------
 public | blog | 테이블 | postgres=arwdDxt/postgres+|               |
        |      |        | mykuma=r/postgres         |               |
 public | book | 테이블 |                           |               |
 public | memo | 테이블 | postgres=arwdDxt/postgres |               |
(3개 행)


devkuma=#

mykuma ロールに付与された権限はそのままである。REASSIGN OWNED コマンドは権限までは変更しない。

REASSIGN OWNED コマンドを使用して、指定したロールが所有しているデータベースオブジェクトの所有権を別のロールに変更する方法について説明した。