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"

अंत में, जैसा कि बाद के उत्तर में बताया गया है, पोस्टग्रेएसक्यूएल कमांड कमांड के लिए बैकग्राउंड में चलते हैं, जो \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;

(जब आप \ du टाइप करते हैं तो psql पर्दे के पीछे क्या करता है)

पिछला भाग 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'

यह मुझे याद करने के लिए मदद करता है कि अक्सर करने के लिए प्रयोग किया जाता है खींचाना कुछ और यू के लिए है यू SERS।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.