Er zijn createuser
& dropuser
commandos:
createuser - define a new PostgreSQL user account dropuser - remove a PostgreSQL user account
Is er een overeenkomstige manier om de gebruikersaccounts weer te geven?
Deze twee commandos zijn niet vereisen dat de gebruiker psql
aanroept en de details van het gebruik ervan niet begrijpt.
Antwoord
Gebruik de psql
shell en:
\deu[+] [PATTERN]
zoals:
postgres=# \deu+ List of user mappings Server | User name | FDW Options --------+-----------+------------- (0 rows)
En voor alle gebruikers:
postgres=# \du List of roles Role name | Attributes | Member of ------------+------------------------------------------------+----------- chpert.net | | {} postgres | Superuser, Create role, Create DB, Replication | {}
Ook zoals MySQL kunt u doen:
$ psql -c "\du" List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- chpert | | {} postgres | Superuser, Create role, Create DB, Replication | {} test | | {}
Reacties
Antwoord
Om de uitvoer te beperken tot alleen de gebruikersnaam, doet u eenvoudigweg het volgende via de psql
shell of vanuit de lokale shell / terminal als
psql -c "SELECT u.usename AS "User Name" FROM pg_catalog.pg_user u;"
Terwijl de snelle m ethod, zoals aangegeven in een eerder antwoord, geeft 3 kolommen weer; inclusief Gebruikersnaam , Lijst met rolkenmerken , en Lid van rollengroep (en).
psql -c "\du"
Tot slot, zoals aangegeven in een volgend antwoord, worden de PostgreSQL-commandos op de achtergrond uitgevoerd voor het \du
-commando laat die” standaard “kolommen zien door aan te roepen:
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;
(wat psql doet achter de schermen als je \ du typt)
Het laatste deel is gekopieerd van de PostgreSQL-mailinglijst .
Antwoord
Voor een eenvoudiger antwoord …
Vanuit psql:
\du
Vanaf de terminal:
psql -c "\du"
Het helpt me te onthouden dat d wordt vaak gebruikt om d escribe iets en u is voor u sers.
Antwoord
SQL-oplossing die normaal wordt gedaan door 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/[email protected]
psql -c '\du'