Il y a createuser
& dropuser
commandes:
createuser - define a new PostgreSQL user account dropuser - remove a PostgreSQL user account
Existe-t-il un moyen correspondant de lister les comptes utilisateurs?
Ces deux commandes ne demander à lutilisateur dappeler psql
ni de comprendre les détails de son utilisation.
Réponse
Utilisez le shell psql
et:
\deu[+] [PATTERN]
tel que:
postgres=# \deu+ List of user mappings Server | User name | FDW Options --------+-----------+------------- (0 rows)
Et pour tous les utilisateurs:
postgres=# \du List of roles Role name | Attributes | Member of ------------+------------------------------------------------+----------- chpert.net | | {} postgres | Superuser, Create role, Create DB, Replication | {}
Aussi comme MySQL, vous pouvez faire:
$ psql -c "\du" List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- chpert | | {} postgres | Superuser, Create role, Create DB, Replication | {} test | | {}
Commentaires
Réponse
Pour limiter la sortie au nom dutilisateur uniquement, procédez comme suit à partir de psql
shell ou depuis le shell / terminal local comme
psql -c "SELECT u.usename AS "User Name" FROM pg_catalog.pg_user u;"
Alors que le m ethod, comme indiqué dans une réponse précédente, affiche 3 colonnes; y compris Nom dutilisateur , Liste des attributs de rôles et Membre du ou des groupe (s) de rôles.
psql -c "\du"
Enfin, comme indiqué dans une réponse ultérieure, les commandes PostgreSQL sexécutent en arrière-plan pour la commande \du
afficher ces colonnes » default « en appelant:
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;
(ce que psql fait dans les coulisses lorsque vous tapez \ du)
La dernière partie a été copiée de la Liste de diffusion PostgreSQL .
Réponse
Pour une réponse plus simple …
Depuis psql:
\du
Depuis le terminal:
psql -c "\du"
Cela maide à me souvenir que d est souvent utilisé pour d escribe quelque chose et u est pour u sers.
Réponse
Solution SQL qui est normalement effectuée par 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'