สั่งรายการบัญชีผู้ใช้ 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'
Frank Henard

5

หากต้องการ จำกัด เอาต์พุตให้เป็นชื่อผู้ใช้เพียงทำสิ่งต่อไปนี้จากpsqlเชลล์หรือจากโลคัลเชลล์ / เทอร์มินัลเป็น

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

ในขณะที่วิธีการอย่างรวดเร็วตามที่ระบุไว้ในคำตอบก่อนหน้าจะแสดง 3 คอลัมน์ รวมถึงชื่อผู้ใช้งาน , รายการของบทบาทคุณสมบัติและสมาชิกของกลุ่มบทบาท (s)

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;

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


2

สำหรับคำตอบที่ง่ายกว่า ...

จากภายใน psql:

\du

จากสถานี:

psql -c '\du'

มันช่วยให้ผมต้องจำไว้ว่าdมักจะใช้เพื่อdบางสิ่งบางอย่าง Escribe และUสำหรับยู Sers

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.