Comando per elencare gli account utente PostgreSQL?


89

Ci sono createusere dropusercomandi:

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

Esiste un modo corrispondente per elencare gli account utente?

Questi due comandi non richiedono all'utente di invocare psqlné comprendere i dettagli dell'utilizzo.

Risposte:


122

Usa la psqlshell e:

\deu[+] [PATTERN] ad esempio:

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

E per tutti gli utenti:

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

Anche come MySQL, puoi fare:

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

22
dal terminal:psql -c '\du'
Frank Henard,

5

Per limitare l'output solo al nome utente, è sufficiente fare quanto segue dalla psqlshell o dalla shell / terminale locale come

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

Mentre il metodo rapido, come sottolineato in una risposta precedente, visualizza 3 colonne; tra cui Nome utente , Elenco degli attributi dei ruoli e Membro dei gruppi di ruoli.

psql -c "\du"

Infine, come sottolineato in una risposta successiva, i comandi PostgreSQL eseguiti in background per il \ducomando mostrano quelle colonne "predefinite" chiamando:

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;

(cosa fa psql dietro le quinte quando digiti \ du)

L'ultima parte è stata copiata dalla Mailing List di PostgreSQL .


2

Soluzione SQL normalmente eseguita da psql \ du:

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;

Rif: https://www.postgresql.org/message-id/1121195544.8208.242.camel@state.g2switchworks.com


2

Per una risposta più semplice ...

Dall'interno di psql:

\du

Dal terminal:

psql -c '\du'

Mi aiuta a ricordare che d è spesso usato per d escribe qualcosa e u è per u sers.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.