Polecenie, aby wyświetlić listę kont użytkowników PostgreSQL?


88

Istnieją createuseri dropuserpolecenia:

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

Czy istnieje odpowiedni sposób wylistowania kont użytkowników?

Te dwa polecenia nie wymagają od użytkownika wywoływania psqlani zrozumienia szczegółów korzystania z niego.

Odpowiedzi:


121

Użyj psqlpowłoki i:

\deu[+] [PATTERN] Jak na przykład:

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

I dla wszystkich użytkowników:

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

Również takie jak MySQL, możesz wykonać:

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

22
z terminala:psql -c '\du'
Frank Henard,

5

Aby ograniczyć wyjście tylko do nazwy użytkownika, po prostu wykonaj następujące czynności z psqlpowłoki lub z lokalnej powłoki / terminala jako

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

Podczas gdy szybka metoda, jak wskazano w poprzedniej odpowiedzi, wyświetla 3 kolumny; w tym nazwę użytkownika , listę atrybutów ról i członka grup ról.

psql -c "\du"

Na koniec, jak wskazano w kolejnej odpowiedzi, polecenia PostgreSQL działają w tle, ponieważ \dupolecenie pokazuje te „domyślne” kolumny, wywołując:

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;

(co psql robi za kulisami po wpisaniu \ du)

Ostatnia część została skopiowana z listy mailingowej PostgreSQL .


2

Rozwiązanie SQL, które zwykle wykonuje 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/1121195544.8208.242.camel@state.g2switchworks.com


2

Dla prostszej odpowiedzi ...

Z poziomu psql:

\du

Z terminala:

psql -c '\du'

To pomaga mi pamiętać, że d jest często używany do d Escribe coś i u jest na kształcie U Sers.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.