指定のロールが所有するオブジェクトの所有権を別のロールに変更する(REASSIGN OWNED)
PostgreSQL の環境で REASSIGN OWNED コマンドを使って指定したロールが所有するデータベースオブジェクトの所有権を別のロールに変更する方法について解説します。ロールを削除する前に別のロールに所有権を変更する場合などに使われます。
(2022 年 04 月 06 日公開 / 2022 年 04 月 06 日更新)
オブジェクトの所有権を別のロールに変更する
REASSIGN OWNED コマンドを使うと指定したロールがデータベース内に所有しているすべてのデータベースオブジェクトを別のロールに所有権を変更します。次の書式を使います。
REASSIGN OWNED BY old_role [, ...] TO new_role
指定したロール( old_role )が所有するオブジェクトの所有権を別のロール( new_role )に変更します。
-- --
それでは実際に試してみます。現在 mydb データベースには momo ロールが所有者の momo スキーマが作成されています。
¥dn
また public スキーマの中には shoplist テーブルが作成されています。
¥dt
また public スキーマの中の blog テーブルに対して momo ロールには SELECT の権限が追加されています。
¥dp
それでは mydb データベース内で momo ロールが所有するオブジェクトの所有権を saru ロールに変更します。次のように実行してください。
reassign owned by momo to saru;
オブジェクトの所有権が saru ロールに変更されました。
-- --
それでは momo スキーマの所有権を確認してみます。
momo スキーマの所有権が saru ロールに変更されていることが確認できました。
次に public スキーマの中に作成されていた shoplist テーブルの所有権を確認してみます。
shoplist テーブルの所有権が saru ロールに変更されていることが確認できました。
最後に public スキーマの中の blog テーブルに対して momo ロールに追加されていた権限を確認してみます。
momo ロールに与えられていた権限についてはそのままです。 REASSIGN OWNED コマンドでは権限までは変更されません。
-- --
REASSIGN OWNED コマンドを使って指定したロールが所有しているデータベースオブジェクトの所有権を別のロールに変更する方法について解説しました。
( Written by Tatsuo Ikura )

著者 / TATSUO IKURA
初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。