Kommando til at liste PostgreSQL-brugerkonti?

Der er createuser & dropuser kommandoer:

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

Er der en tilsvarende måde at liste brugerkonti på?

Disse to kommandoer gør ikke kræve, at brugeren påberåber sig psql eller forstår detaljerne i brugen af det.

Svar

Brug psql shell og:

\deu[+] [PATTERN] såsom:

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

Og for alle brugere:

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

Også som MySQL kan du gøre:

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

Kommentarer

  • fra terminal: psql -c '\du'

Svar

For at begrænse output til kun brugernavnet skal du blot gøre følgende enten fra psql shell eller fra den lokale shell / terminal som

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

Mens den hurtige m ethod, som påpeget i et tidligere svar, viser 3 kolonner; inklusive Brugernavn , Liste over rolleattributter og Medlem af rollegruppe (r).

psql -c "\du" 

Endelig, som påpeget i et efterfølgende svar, viser PostgreSQL-kommandoerne i baggrunden til \du -kommandoen disse” standard “-kolonner ved at kalde:

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; 

(hvad psql gør bag kulisserne, når du skriver \ du)

Den sidste del blev kopieret fra PostgreSQL mailingliste .

Svar

For et enklere svar …

Fra inden for psql:

\du 

Fra terminalen:

psql -c "\du" 

Det hjælper mig med at huske, at d bruges ofte til d escribe noget, og u u sers.

Svar

SQL-løsning, som normalt udføres af 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]

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *