PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So ändern Sie einen Benutzer in einen Superuser in PostgreSQL

  • Erstellen eines neuen Benutzers
  • Vorhandene Benutzerberechtigungen anzeigen
  • Bestehende Benutzerberechtigungen ändern
    • Zuweisen von SUPERUSER Erlaubnis
    • Berechtigungen widerrufen

Das Ändern von Benutzerberechtigungen innerhalb von PostgreSQL kann von ziemlich einfach bis extrem komplex reichen, je nachdem, welche permissive Granularität tatsächlich erforderlich ist. In den meisten Fällen ist es jedoch der mächtige ALTER USER Befehl, der verwendet werden sollte, um Benutzern die Anmeldung zu ermöglichen, Datenbanken zu erstellen, Rollen zu verwalten und sogar ein SUPERUSER zu werden Konto.

Wir werden kurz die Leistungsfähigkeit von ALTER USER untersuchen Befehl, sodass Sie bei Bedarf problemlos eine Vielzahl von Berechtigungszuweisungen und -entfernungen durchführen können.

Erstellen eines neuen Benutzers

Bevor wir zum Verändern kommen Benutzerberechtigungen, sollten wir ein neues Benutzerkonto einrichten (allgemein als ROLE bezeichnet). ), um damit herumzuspielen.

Zu Beginn listen wir alle vorhandenen Benutzer auf:

=# SELECT usename FROM pg_user;
 usename
----------
 postgres
(1 row)

Standardmäßig postgres ist normalerweise der einzige existierende Benutzer, also möchten wir einen neuen Benutzer von librarian erstellen um unsere library zu steuern Datenbank. Dies kann mit dem CREATE USER erreicht werden Befehl:

=# CREATE USER librarian;
CREATE ROLE
=# SELECT usename FROM pg_user;
  usename
-----------
 postgres
 librarian
(2 rows)

Vorhandene Benutzerberechtigungen anzeigen

Es kann oft hilfreich sein, die vorhandenen Berechtigungen zu überprüfen, die den Benutzern im System zugewiesen sind. Das geht ganz einfach mit dem \du Befehl aus dem psql Eingabeaufforderung:

=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

Wir können das deutlich sehen, obwohl wir jetzt einen neuen librarian hinzugefügt haben Benutzer müssen wir ihm einige Berechtigungen zuweisen.

Bestehende Benutzerberechtigungen ändern

Nun, da unser librarian Benutzer existiert, können wir mit der Verwendung von ALTER USER beginnen um die dem librarian erteilten Berechtigungen zu ändern .

Das grundlegende Format von ALTER USER enthält den Namen des Benutzers (oder ROLE ) gefolgt von einer Reihe von options um PostgreSQL darüber zu informieren, welche zulässigen Änderungen vorgenommen werden sollen:

=# ALTER USER role_specification WITH OPTION1 OPTION2 OPTION3;

Diese Optionen reichen von CREATEDB , CREATEROLE , CREATEUSER , und sogar SUPERUSER . Außerdem haben die meisten Optionen auch ein negatives Gegenstück, das dem System mitteilt, dass Sie ablehnen möchten dem Benutzer diese besondere Berechtigung. Diese Optionsnamen sind die gleichen wie ihr Zuweisungsgegenstück, ihnen wird jedoch NO vorangestellt (zB NOCREATEDB , NOCREATEROLE , NOSUPERUSER ).

Zuweisen von SUPERUSER Erlaubnis

Jetzt verstehen wir die Grundlagen der Erstellung von Benutzern und der Verwendung von ALTER USER um Berechtigungen zu ändern, können wir ganz einfach den SUPERUSER verwenden Möglichkeit, unseren librarian zuzuweisen Benutzer SUPERUSER Erlaubnis:

=# ALTER USER librarian WITH SUPERUSER;
ALTER ROLE

Sicher genug, wenn wir jetzt unsere Berechtigungsliste anzeigen, sehen wir librarian hat den neuen SUPERUSER Erlaubnis, die wir wollen:

=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian | Superuser                                      | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

Berechtigungen widerrufen

Für den Fall, dass wir einen Fehler machen und eine Berechtigung zuweisen, die wir später widerrufen möchten, geben Sie einfach denselben ALTER USER ein Befehl, aber fügen Sie das NO hinzu Präfix vor den zulässigen Optionen, die widerrufen werden sollen.

Beispielsweise können wir SUPERUSER entfernen von unserem librarian Benutzer so:

=# ALTER USER librarian WITH NOSUPERUSER;
ALTER ROLE
=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}