Befehl zum Auflisten von PostgreSQL-Benutzerkonten?

88

Es gibt createuser& dropuserBefehle:

createuser - define a new PostgreSQL user account
dropuser - remove a PostgreSQL user account

Gibt es eine entsprechende Möglichkeit, die Benutzerkonten aufzulisten?

Für diese beiden Befehle muss der Benutzer psqlkeine Details zu ihrer Verwendung aufrufen oder verstehen.

CW Holeman II
quelle

Antworten:

121

Verwenden Sie die psqlShell und:

\deu[+] [PATTERN] sowie:

postgres=# \deu+
      List of user mappings
 Server | User name | FDW Options 
--------+-----------+-------------
(0 rows)

Und für alle Benutzer:

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

Auch wie MySQL können Sie:

$ psql -c "\du"
                             List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
 chpert    |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}
 test      |                                                | {}
Persischer Golf
quelle
22
vom Terminal:psql -c '\du'
Frank Henard
5

Um die Ausgabe nur auf den Benutzernamen zu beschränken, führen Sie einfach die folgenden Schritte aus, entweder von der psqlShell aus oder von der lokalen Shell / dem lokalen Terminal aus als

psql -c "SELECT u.usename AS "User Name" FROM pg_catalog.pg_user u;"

Während die Schnellmethode, wie in einer vorherigen Antwort ausgeführt, 3 Spalten anzeigt; einschließlich Benutzername , Liste der Rollenattribute und Mitglied der Rollengruppe (n).

psql -c "\du"

Wie in einer nachfolgenden Antwort ausgeführt, zeigen die PostgreSQL-Befehle, die im Hintergrund für den \duBefehl ausgeführt werden, diese "Standard" -Spalten an, indem sie Folgendes aufrufen:

SELECT u.usename AS "User name",
  u.usesysid AS "User ID",
  CASE WHEN u.usesuper AND u.usecreatedb THEN CAST('superuser, create
database' AS pg_catalog.text)
       WHEN u.usesuper THEN CAST('superuser' AS pg_catalog.text)
       WHEN u.usecreatedb THEN CAST('create database' AS
pg_catalog.text)
       ELSE CAST('' AS pg_catalog.text)
  END AS "Attributes"
FROM pg_catalog.pg_user u
ORDER BY 1;

(Was macht psql hinter den Kulissen, wenn Sie \ du eingeben?)

Der letzte Teil wurde aus der PostgreSQL-Mailingliste kopiert .

ILMostro_7
quelle
2

SQL-Lösung, die normalerweise von psql \ du ausgeführt wird:

SELECT u.usename AS "User name",
  u.usesysid AS "User ID",
  CASE WHEN u.usesuper AND u.usecreatedb THEN CAST('superuser, create
database' AS pg_catalog.text)
       WHEN u.usesuper THEN CAST('superuser' AS pg_catalog.text)
       WHEN u.usecreatedb THEN CAST('create database' AS
pg_catalog.text)
       ELSE CAST('' AS pg_catalog.text)
  END AS "Attributes"
FROM pg_catalog.pg_user u
ORDER BY 1;

Ref: https://www.postgresql.org/message-id/[email protected]

İsmail Yavuz
quelle
2

Für eine einfachere Antwort ...

Aus psql heraus:

\du

Vom Terminal aus:

psql -c '\du'

Es hilft mir, daran zu erinnern , d oft verwendet wird , d escribe etwas und u ist für u sers.

Suragch
quelle