Команда для переліку облікових записів користувачів PostgreSQL?


88

Є createuser& dropuserкоманди:

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

Чи є відповідний спосіб перерахувати облікові записи користувачів?

Ці дві команди не вимагають від користувача запиту 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"

Нарешті, як зазначено у наступній відповіді, команди PostgreSQL, що виконуються у фоновому режимі для \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;

(що робить psql за кадром, коли ви набираєте \ du)

Остання частина була скопійована зі списку розсилки PostgreSQL .


2

Рішення SQL, яке зазвичай виконується 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;

Посилання: https://www.postgresql.org/message-id/1121195544.8208.242.camel@state.g2switchworks.com


2

Для більш простої відповіді ...

Зсередини psql:

\du

З терміналу:

psql -c '\du'

Це допомагає мені пам'ятати , що d часто використовується для d описувати коло що - то і у для ˙U ГКР.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.