Einführung in die PostgreSQL-Liste Benutzer
In jeder Datenbank müssen wir mehrere Benutzer erstellen und haben, die auf die Datenbank zugreifen können. Jeder Benutzer sollte bestimmte Zugriffsrechte haben und sollte autorisiert werden, der Benutzer. Standardmäßig verfügt der PostgreSQL-Datenbankserver über einen Standardbenutzer namens Postgres. Dies ist der Superuser, der über alle Rechte und Privilegien für alle Datenbanken und Tabellen verfügt. Er kann selbst neue Benutzer erstellen und ihnen Rollen zuweisen, Berechtigungen für andere Benutzer erteilen und widerrufen und so weiter. Häufig muss der Superuser oder der Datenbankadministrator alle Benutzer kennen, die auf dem aktuellen Datenbankserver vorhanden sind. In diesem Artikel erfahren wir, wie wir alle Benutzer auflisten können, die auf unserem aktuellen Datenbankserver vorhanden sind. Lassen Sie uns zunächst untersuchen, wo die benutzerbezogenen Daten in der Datenbank gespeichert und manipuliert werden.
PostgreSQL-Listenbenutzer
Unten sind die drei verschiedenen Listenbenutzer aufgeführt:
Starten Sie Ihren kostenlosen Data Science Kurs
Hadoop, Data Science, Statistics & andere
1. Benutzerdaten in PostgreSQL
Alle benutzerbezogenen Daten werden in der Tabelle pg_user gespeichert, die zum Schema pg_catalog gehört. Diese Tabelle enthält alle Informationen wie username, usesysid, usecreatedb, usesuper, userepl, usebypassrls, passwd, valuntil und useconfig. Username, useswd und passwd sind der Name, die ID und das Passwort, die im MD5-Hash-Verschlüsselungssystem des Benutzers gespeichert sind. Gleichzeitig sind alle anderen Parameter die booleschen Parameter, die angeben, ob der Benutzer über diese Berechtigung verfügt, z. B. usesuper , das angibt, ob dieser Benutzer ein Superuser ist oder nicht. Wenn ja, dann enthält es den Wert als t , der für true steht, sonst bedeutet f false . Lassen Sie uns sehen, was alle anderen Felder in der Praxis bedeuten können.
- Usecreatedb: Dieses Feld gibt an, ob der betreffende Benutzer eine neue Datenbank erstellen kann und die Berechtigung dazu hat.
- Userepl: Wir können Replikationen einer einzelnen Tabelle in vielen anderen Datenbanken erstellen. Nur ein bestimmter Benutzer, der über diese Berechtigung verfügt, kann dies tun. Wenn der Benutzer das Recht hat, neue Replikate zu erstellen, wird dieses Feld auf true gesetzt.
- Usebypassrls: Dieses Feld wird nur dann auf true gesetzt, wenn der Benutzer das RLS umgehen darf
Wir werden zuerst sehen, wie wir die benutzerbezogenen Informationen aus der Tabelle pg_user abrufen können. Wir müssen unsere Abfrage folgendermaßen erstellen:
Code:
SELECT * FROM pg_catalog.pg_user;
Ausgang:
Wenn Sie nur die Liste der Benutzer mit ihren Namen abrufen möchten, können Sie die folgende Abfrage auslösen.
Artikelnummer:
SELECT usename FROM pg_catalog.pg_user;
Ausgang:
2. Verwenden von MetaBefehlen
PostgreSQL bietet uns ein wunderbares Dienstprogramm namens psql, mit dem wir Metabefehle verwenden können. MetaCommands sind die kurzen vorgefertigten Dienstprogramme, die zur Verfügung stehen und die Arbeit des Datenbankadministrators sehr einfach machen. Zum Abrufen der benutzerbezogenen Daten \ ist du der Meta-Befehl, der verwendet werden kann. Dazu müssen Sie die psql-Eingabeaufforderung in PostgreSQL verwenden. Lassen Sie uns diesen Befehl auslösen und sehen, dass wir das Ergebnis erhalten:
Code:
\du
Ausgang:
- Hier ist Rollenname der Name des Benutzers. Liste der Rollen, d.h. attribute, die die Rollen sind, die ein bestimmter Benutzer für sich hat. Superuser, Rolle erstellen, Datenbank erstellen, Replikation, RLS umgehen sind dem Superuser zugewiesene Regeln, dh der Superuser kann die neuen Rollen und Benutzer erstellen, neue Datenbanken erstellen, Replikationen der vorhandenen Objekte durchführen und das RLS umgehen.
- Feld „Mitglied von“ gibt an, ob der Benutzer Mitglied einer Gruppe ist. In PostgreSQL kann der Datenbankadministrator mehrere Gruppen erstellen und verschiedene Benutzer zu verschiedenen Gruppen hinzufügen, was ihm hilft, die Benutzer ordnungsgemäß zu verwalten, während Berechtigungen hinzugefügt und widerrufen werden. Wenn es solche Gruppen gibt und dieser bestimmte Benutzer zu einer bestimmten Gruppe gehört, wird der Name dieser Gruppe vor diesem Benutzer im Feld angezeigt Mitglied der Spalte.
- Dieser Metabefehl löst intern eine Abfrage für die Tabelle pg_catalog.pg_user aus, um die Benutzerinformationen abzurufen. Hier erhalten wir den Rollennamen als Namen des Benutzers, und eine Liste von Rollenattributen hilft uns zu wissen, welche Berechtigungen diesem bestimmten Benutzer gewährt werden, während ein Mitglied des Felds uns mitteilt, ob der Benutzer Mitglied einer bestimmten Gruppe ist, falls vorhanden. Die Abfrage, die intern nach der Verwendung von \du metacommand ausgelöst wird, ähnelt der folgenden Abfrageanweisung:
Kodex:
SELECT u.usename AS "Role name",
CASE WHEN u.usesuper AND u.usecreatedb THEN CAST('Create DB, Superuser' AS pg_catalog.text)
WHEN u.usesuper THEN CAST('Superuser' AS pg_catalog.text) WHEN u.usecreatedb THEN CAST('Create DB' AS pg_catalog.text)
ELSE CAST('' AS pg_catalog.text) END AS "Attributes"
FROM pg_catalog.pg_user u ORDER BY 1;
3. Verwenden von pg_shadow
Eine weitere Möglichkeit, die Liste der Benutzer abzurufen, besteht darin, die Tabelle pg_shadow zu verwenden, die auch Informationen zu den Benutzern im PostgreSQL-Server enthält. Diese Tabelle wird aus Gründen der Abwärtskompatibilität für die Versionen von PostgreSQL vor 8.1 beibehalten. Diese Tabelle speichert die Rollen, die sich anmelden können, und kennzeichnet rolcanlogin als 1 in der Tabelle pg_authid. Pg_user ist die Ansicht, die für die öffentlich verfügbare Basistabelle pg_shadow erstellt wurde. pg_shadow ist nur für den Superuser zugänglich. die Ansicht pg_user enthält das Kennwortfeld als leer, um die Sicherheit zu gewährleisten. Die Tabelle pg_id enthält die Felder username, usersid, usecreatedb, usesuper, userepl, usebypassrls, passwd, valuntil und useconfig für alle Benutzer auf dem Datenbankserver.
Artikelnummer:
SELECT * FROM pg_shadow;
Ausgang:
select usesysid as "Id of User", usename as "User Name",
usesuper as "Whether User Is SuperUser", passwd as "Md5 Encrypted Password", valuntil as "Expiry of Password"
from pg_shadow order by usename;
Ausgang:
Im PostgreSQL-Datenbankserver können wir die Informationen des Benutzers abrufen, indem wir entweder die Datensätze aus der Tabelle pg_user abrufen, die zum Schema pg_catalog gehört. Eine weitere Möglichkeit besteht darin, den Metabefehl \du zu verwenden, der die Abfrage intern in der Tabelle pg_user selbst pg_user . Abgesehen davon gibt es eine weitere Tabelle mit dem Namen pg_shadow , in der Informationen zu den Benutzern gespeichert werden und mit der alle Benutzer auf dem PostgreSQL-Datenbankserver aufgelistet werden können. Beachten Sie, dass der Umfang all dieser Methoden der gesamte Datenbankserver ist.
Empfohlene Artikel
Dies ist eine Anleitung für Benutzer von PostgreSQL-Listen. Hier diskutieren wir Benutzerdaten, Benutzer metaCommand und Benutzer pg_shadow mit Beispielen zu implementieren. Sie können auch unsere anderen verwandten Artikel durchgehen, um mehr zu erfahren –
- PostgreSQL FETCH
- Fremdschlüssel in PostgreSQL
- PostgreSQL-Tabelle
- PostgreSQL-Abfragen / Einführung / Beispiele
- PostgreSQL REGEXP_MATCHES()
- Leitfaden für SQL REGEXP