Der er createuser
& dropuser
kommandoer:
createuser - define a new PostgreSQL user account dropuser - remove a PostgreSQL user account
Er der en tilsvarende måde at liste brugerkonti på?
Disse to kommandoer gør ikke kræve, at brugeren påberåber sig psql
eller forstår detaljerne i brugen af det.
Svar
Brug psql
shell og:
\deu[+] [PATTERN]
såsom:
postgres=# \deu+ List of user mappings Server | User name | FDW Options --------+-----------+------------- (0 rows)
Og for alle brugere:
postgres=# \du List of roles Role name | Attributes | Member of ------------+------------------------------------------------+----------- chpert.net | | {} postgres | Superuser, Create role, Create DB, Replication | {}
Også som MySQL kan du gøre:
$ psql -c "\du" List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- chpert | | {} postgres | Superuser, Create role, Create DB, Replication | {} test | | {}
Kommentarer
Svar
For at begrænse output til kun brugernavnet skal du blot gøre følgende enten fra psql
shell eller fra den lokale shell / terminal som
psql -c "SELECT u.usename AS "User Name" FROM pg_catalog.pg_user u;"
Mens den hurtige m ethod, som påpeget i et tidligere svar, viser 3 kolonner; inklusive Brugernavn , Liste over rolleattributter og Medlem af rollegruppe (r).
psql -c "\du"
Endelig, som påpeget i et efterfølgende svar, viser PostgreSQL-kommandoerne i baggrunden til \du
-kommandoen disse” standard “-kolonner ved at kalde:
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;
(hvad psql gør bag kulisserne, når du skriver \ du)
Den sidste del blev kopieret fra PostgreSQL mailingliste .
Svar
For et enklere svar …
Fra inden for psql:
\du
Fra terminalen:
psql -c "\du"
Det hjælper mig med at huske, at d bruges ofte til d escribe noget, og u u sers.
Svar
SQL-løsning, som normalt udføres af 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'