PostgreSQL kullanıcı hesaplarını listeleme komutu?


88

Orada createuser& dropuserkomutlar:

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

Kullanıcı hesaplarını listelemek için uygun bir yol var mı?

Bu iki komut, kullanıcının psqlonu kullanmanın detaylarını çağırmasını veya anlamasını gerektirmez .

Yanıtlar:


121

psqlKabuğu kullanın ve:

\deu[+] [PATTERN] gibi:

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

Ve tüm kullanıcılar için:

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

Ayrıca MySQL gibi şunları yapabilirsiniz:

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

22
terminalden:psql -c '\du'
Frank Henard

5

Çıktıyı yalnızca kullanıcı adıyla sınırlandırmak için aşağıdakileri ya psqlkabuktan ya da yerel kabuktan / terminalden yapın.

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

Hızlı bir yöntem, önceki bir cevapta belirtildiği gibi, 3 sütun gösterir; dahil Kullanıcı Adı , Roller Listesi Nitelikler ve üyesi rolü grup (lar).

psql -c "\du"

Son olarak, daha sonraki bir cevabın da işaret ettiği gibi, PostgreSQL komutları, \dukomut için arka planda çalışan bu "varsayılan" sütunları şu şekilde gösterir:

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;

(\ du yazdığınızda psql sahne arkasında ne yapar)

Son bölüm PostgreSQL Posta Listesinden kopyalandı .


2

Normalde psql \ du tarafından yapılan SQL Solution:

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

Daha basit bir cevap için ...

Psql içinden:

\du

Terminalden:

psql -c '\du'

Bu beni hatırlamak yardımcı olur d sıklıkla kullanılır d Escribe şey ve u içindir u sers.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.