Lệnh liệt kê tài khoản người dùng PostgreSQL?


88

createuser& dropuserlệnh:

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

Có một cách tương ứng để liệt kê các tài khoản người dùng?

Hai lệnh này không yêu cầu người dùng gọi psqlvà cũng không hiểu chi tiết về việc sử dụng nó.

Câu trả lời:


121

Sử dụng psqlvỏ và:

\deu[+] [PATTERN] nhu la:

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

Và cho tất cả người dùng:

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

Cũng như MySQL, bạn có thể làm:

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

22
từ thiết bị đầu cuối:psql -c '\du'
Frank Henard

5

Để chỉ giới hạn đầu ra cho tên người dùng, chỉ cần thực hiện các thao tác sau từ psqlshell hoặc từ shell / terminal cục bộ như

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

Trong khi phương thức nhanh, như đã chỉ ra trong câu trả lời trước, hiển thị 3 cột; bao gồm Tên người dùng , Danh sách các thuộc tính vai tròThành viên của nhóm vai trò.

psql -c "\du"

Cuối cùng, như được chỉ ra trong một câu trả lời tiếp theo, các lệnh PostgreSQL chạy trong nền cho \dulệnh hiển thị các cột "mặc định" đó bằng cách gọi:

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;

(những gì psql thực hiện phía sau hậu trường khi bạn nhập \ du)

Phần cuối cùng được sao chép từ Danh sách gửi thư của PostgreSQL .


2

Giải pháp SQL thường được thực hiện bởi 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;

Tham chiếu: https://www.postgresql.org/message-id/1121195544.8208.242.camel@state.g2switchworks.com


2

Để có câu trả lời đơn giản hơn ...

Từ trong psql:

\du

Từ thiết bị đầu cuối:

psql -c '\du'

Nó giúp tôi nhớ rằng d thường được dùng để d vòng bàng tiếp một cái gì đó và uu SERS.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.