Ändern Sie den Eigentümer der PostgreSQL-Datenbank

Shihab Sikder 20 Juni 2023
Ändern Sie den Eigentümer der PostgreSQL-Datenbank

Wir können die Abfrage REASSIGN OWNED verwenden, um den Besitz der bestehenden Datenbank zu ändern. Der neue Benutzer kann alle Abfragen durchführen, die der vorherige Eigentümer ausführen konnte.

Ändern Sie den Besitz einer Datenbank in Psql

Lassen Sie uns zu Demonstrationszwecken eine neue Datenbank mit einem alten Eigentümer und einem neuen Benutzer erstellen. Weisen Sie dann den neuen Benutzer als Besitzer der neuen Datenbank zu.

Erstellen einer Datenbank:

postgres=# create DATABASE SELL;
CREATE DATABASE
postgres=#

Neuen Benutzer anlegen:

postgres=# CREATE USER TEST_USER WITH PASSWORD '~test~';
CREATE ROLE
postgres=#

Der aktuelle Besitzer der Tabelle Verkaufen:

SELECT dbs.datname, roles.rolname
FROM pg_catalog.pg_database dbs, pg_catalog.pg_roles roles
WHERE dbs.datdba = roles.oid;

Zunächst haben wir uns als postgres eingeloggt; das war unser Benutzername. Wenn wir nun die obige Abfrage ausführen, wird mir der Eigentümer der vorhandenen Datenbank in Postgres angezeigt:

  datname  | rolname
-----------+----------
 template0 | postgres
 template1 | postgres
 sell      | postgres
 postgres  | postgres
(4 rows)

Wir können sehen, dass die Tabelle Sell den Besitzer postgres hat. Lassen Sie uns den Besitzer mit dem ‚test_user‘ ändern.

So werden wir es machen:

ALTER DATABASE SELL OWNER TO TEST_USER;

Und hier ist die Ausgabe:

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=#

Sie können sehen, dass der Datenbankbesitzer namens sell in test_user geändert wurde.

Um mehr über den altering database-Befehl zu erfahren, folgen Sie der offiziellen Dokumentation.

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

Verwandter Artikel - PostgreSQL Database