it-swarm.com.de

Befehl zum Auflisten von PostgreSQL-Benutzerkonten?

Es gibt createuser & dropuser Befehle:

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 weder psql aufrufen noch Einzelheiten zu seiner Verwendung verstehen.

95
CW Holeman II

Verwenden Sie die psql Shell 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 Folgendes tun:

$ psql -c "\du"
                             List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
 chpert    |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}
 test      |                                                | {}
131
PersianGulf

Um die Ausgabe nur auf den Benutzernamen zu beschränken, führen Sie einfach die folgenden Schritte aus, entweder über die psql Shell oder über die lokale Shell/das lokale Terminal als

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

Während die schnelle Methode, 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 Befehl \du Ausgeführt werden, diese "Standard" -Spalten durch Aufrufen von:

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 psql hinter den Kulissen macht, wenn Sie\du eingeben)

Der letzte Teil wurde aus der PostgreSQL Mailing List kopiert.

8
ILMostro_7

Für eine einfachere Antwort ...

Aus psql heraus:

\du

Vom Terminal:

psql -c '\du'

Es hilft mir, mich daran zu erinnern, dass d oft verwendet wird, um d etwas zu schreiben, und für sers ist.

3
Suragch

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]

2
İsmail Yavuz