PostgreSQL データベースの所有者を変更する
Shihab Sikder
2023年6月20日
REASSIGN OWNED
クエリを使用して、既存のデータベースの所有権を変更できます。 新しいユーザーは、前の所有者が実行できたすべてのクエリを実行できます。
Psql でデータベースの所有権を変更する
デモンストレーションのために、古い所有者と新しいユーザーで新しいデータベースを作成してみましょう。 次に、新しいユーザーを新しいデータベースの所有者として割り当てます。
データベースの作成:
postgres=# create DATABASE SELL;
CREATE DATABASE
postgres=#
新しいユーザーの作成:
postgres=# CREATE USER TEST_USER WITH PASSWORD '~test~';
CREATE ROLE
postgres=#
Sell
テーブルの現在の所有者:
SELECT dbs.datname, roles.rolname
FROM pg_catalog.pg_database dbs, pg_catalog.pg_roles roles
WHERE dbs.datdba = roles.oid;
最初に、postgres
としてログインしました。 これが私たちのユーザー名でした。 上記のクエリを実行すると、Postgres 内の既存のデータベースの所有者が表示されます。
datname | rolname
-----------+----------
template0 | postgres
template1 | postgres
sell | postgres
postgres | postgres
(4 rows)
テーブル Sell
には所有者 postgres
があることがわかります。 test_user
で所有者を変更しましょう。
方法は次のとおりです。
ALTER DATABASE SELL OWNER TO TEST_USER;
出力は次のとおりです。
postgres=# ALTER DATABASE SELL OWNER TO TEST_USER;
ALTER DATABASE
postgres=# SELECT dbs.datname, roles.rolname
postgres-# FROM pg_catalog.pg_database dbs, pg_catalog.pg_roles roles
postgres-# WHERE dbs.datdba = roles.oid;
datname | rolname
-----------+-----------
template0 | postgres
template1 | postgres
postgres | postgres
sell | test_user
(4 rows)
postgres=#
sell
という名前のデータベース所有者が test_user
に変更されていることがわかります。
データベースの変更コマンドの詳細については、公式ドキュメント に従ってください。
著者: Shihab Sikder