¿Comando para enumerar las cuentas de usuario de PostgreSQL?

Hay createuser & dropuser comandos:

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

¿Existe una forma correspondiente de enumerar las cuentas de usuario?

Estos dos comandos no requerir que el usuario invoque psql ni comprenda los detalles de su uso.

Respuesta

Utilice el psql shell y:

\deu[+] [PATTERN] como:

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

Y para todos los usuarios:

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

También como MySQL, puede hacer:

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

Comentarios

  • desde la terminal: psql -c '\du'

Respuesta

Para limitar la salida solo al nombre de usuario, simplemente haga lo siguiente desde psql shell o desde el shell / terminal local como

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

Mientras que el m rápido El método, como se señaló en una respuesta anterior, muestra 3 columnas; incluido Nombre de usuario , Lista de atributos de roles y Miembro de grupo (s) de funciones.

psql -c "\du" 

Finalmente, como se señaló en una respuesta posterior, los comandos de PostgreSQL se ejecutan en segundo plano para el comando \du que muestra esas columnas» predeterminadas «llamando a:

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; 

(lo que hace psql entre bastidores cuando escribe \ du)

La última parte se copió de la Lista de correo de PostgreSQL .

Respuesta

Para una respuesta más simple …

Desde dentro de psql:

\du 

Desde la terminal:

psql -c "\du" 

Me ayuda a recordar que d se usa a menudo para d escribe algo y u es para u sers.

Responder

Solución SQL que normalmente la realiza 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; 

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *