指定のロールが所有するオブジェクトの所有権を別のロールに変更する(REASSIGN OWNED)

PostgreSQL の環境で REASSIGN OWNED コマンドを使って指定したロールが所有するデータベースオブジェクトの所有権を別のロールに変更する方法について解説します。ロールを削除する前に別のロールに所有権を変更する場合などに使われます。

(Last modified: )

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

REASSIGN OWNED コマンドを使うと指定したロールがデータベース内に所有しているすべてのデータベースオブジェクトを別のロールに所有権を変更します。次の書式を使います。

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

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

-- --

それでは実際に試してみます。現在 mydb データベースには momo ロールが所有者の momo スキーマが作成されています。

\dn

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

また public スキーマの中には shoplist テーブルが作成されています。

\dt

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

また public スキーマの中の blog テーブルに対して momo ロールには SELECT の権限が追加されています。

\dp

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

それでは mydb データベース内で momo ロールが所有するオブジェクトの所有権を saru ロールに変更します。次のように実行してください。

reassign owned by momo to saru;

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

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

-- --

それでは momo スキーマの所有権を確認してみます。

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

momo スキーマの所有権が saru ロールに変更されていることが確認できました。

次に public スキーマの中に作成されていた shoplist テーブルの所有権を確認してみます。

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

shoplist テーブルの所有権が saru ロールに変更されていることが確認できました。

最後に public スキーマの中の blog テーブルに対して momo ロールに追加されていた権限を確認してみます。

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

momo ロールに与えられていた権限についてはそのままです。 REASSIGN OWNED コマンドでは権限までは変更されません。

-- --

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

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。