PostgreSQL データベースの所有者を変更する

Shihab Sikder 2023年6月20日
PostgreSQL データベースの所有者を変更する

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
Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website

関連記事 - PostgreSQL Database