PostgreSQLユーザーアカウントを一覧表示するコマンド?


88

createuserdropuserコマンドがあります:

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

ユーザーアカウントを一覧表示する対応する方法はありますか?

これらの2つのコマンドは、ユーザーがpsqlそれを使用する詳細を呼び出したり、理解したりする必要はありません。

回答:


121

psqlシェルを使用して:

\deu[+] [PATTERN] といった:

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

すべてのユーザー向け:

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

MySQLなどもできます:

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

22
ターミナルから:psql -c '\du'
フランクヘナード

5

出力をユーザー名のみに制限するには、psqlシェルまたはローカルシェル/ターミナルから次のように実行します。

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

前の回答で指摘したように、簡単な方法では3つの列が表示されます。含むユーザー名役割属性のリスト、およびのメンバー役割グループ(複数可)。

psql -c "\du"

最後に、後続の回答で指摘されているように、\duコマンドのバックグラウンドで実行されるPostgreSQLコマンドは、以下を呼び出して「デフォルト」列を表示します。

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と入力したときにpsqlが舞台裏で行うこと)

最後の部分はPostgreSQLメーリングリストからコピーされました。


2

通常psql \ duによって実行されるSQLソリューション:

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;

参照:https : //www.postgresql.org/message-id/1121195544.8208.242.camel@state.g2switchworks.com


2

もっと簡単な答えを...

psql内から:

\du

ターミナルから:

psql -c '\du'

それは私がそれを覚えておくことができますdは、多くの場合に使用されているDの escribe何かとuがためであるuの SERS。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.