- Erstellen eines neuen Benutzers
- Vorhandene Benutzerberechtigungen anzeigen
- Bestehende Benutzerberechtigungen ändern
- Zuweisen von
SUPERUSER
Erlaubnis - Berechtigungen widerrufen
- Zuweisen von
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 | {}