Det finns createuser
& dropuser
kommandon:
createuser - define a new PostgreSQL user account dropuser - remove a PostgreSQL user account
Finns det ett motsvarande sätt att lista användarkonton?
Dessa två kommandon fungerar inte kräva att användaren åberopar psql
eller förstår detaljer om hur den används.
Svar
Använd skalet psql
och:
\deu[+] [PATTERN]
som:
postgres=# \deu+ List of user mappings Server | User name | FDW Options --------+-----------+------------- (0 rows)
Och för alla användare:
postgres=# \du List of roles Role name | Attributes | Member of ------------+------------------------------------------------+----------- chpert.net | | {} postgres | Superuser, Create role, Create DB, Replication | {}
Även som MySQL kan du göra:
$ psql -c "\du" List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- chpert | | {} postgres | Superuser, Create role, Create DB, Replication | {} test | | {}
Kommentarer
Svar
För att begränsa utdata till endast användarnamnet, gör helt enkelt följande antingen från psql
skal eller från det lokala skalet / terminalen som
psql -c "SELECT u.usename AS "User Name" FROM pg_catalog.pg_user u;"
Medan den snabba m etod, som påpekades i ett tidigare svar, visar tre kolumner; inklusive Användarnamn , Lista över rollattribut och Medlem av rollgrupp (er).
psql -c "\du"
Slutligen, som påpekas i ett efterföljande svar, visas kommandona PostgreSQL i bakgrunden för kommandot \du
de” standard ”-kolumnerna genom att ringa:
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;
(vad psql gör bakom kulisserna när du skriver \ du)
Den sista delen kopierades från PostgreSQL-e-postlistan .
Svar
För ett enklare svar …
Från psql:
\du
Från terminalen:
psql -c "\du"
Det hjälper mig att komma ihåg att d används ofta för att d escribe något och u u sers.
Svar
SQL-lösning som normalt görs av 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'