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.

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      |                                                | {}

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 .


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/1121195544.8208.242.camel@state.g2switchworks.com


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.