Il existe des commandes createuser
& dropuser
:
createuser - define a new PostgreSQL user account
dropuser - remove a PostgreSQL user account
Existe-t-il un moyen correspondant de répertorier les comptes d'utilisateurs?
Ces deux commandes ne nécessitent pas que l'utilisateur appelle psql
ni ne comprenne les détails de son utilisation.
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 | | {}
Pour limiter la sortie au nom d'utilisateur uniquement, procédez simplement comme suit à partir du shell psql
ou du shell/terminal local en tant que
psql -c "SELECT u.usename AS "User Name" FROM pg_catalog.pg_user u;"
Alors que la méthode rapide, comme indiqué dans une réponse précédente, affiche 3 colonnes; y compris Nom d'utilisateur , Liste des attributs des rôles et Membre du groupe (s) de rôles.
psql -c "\du"
Enfin, comme indiqué dans une réponse ultérieure, les commandes PostgreSQL s'exécutent en arrière-plan pour le \du
commande affiche ces colonnes "par défaut" 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 fait psql en arrière-plan lorsque vous tapez\du)
La dernière partie a été copiée à partir de la PostgreSQL Mailing List .
Pour une réponse plus simple ...
Depuis psql:
\du
Depuis le terminal:
psql -c '\du'
Cela m'aide à me rappeler que d est souvent utilisé pour d escrire quelque chose et est pour sers.
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;
Réf: https://www.postgresql.org/message-id/[email protected]