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
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]
psql -c '\du'