CW *_* II 102 users postgresql
有createuser&dropuser命令:
createuser - define a new PostgreSQL user account
dropuser - remove a PostgreSQL user account
Run Code Online (Sandbox Code Playgroud)
有没有相应的方法来列出用户帐户?
这两个命令不需要用户调用psql或了解使用它的细节。
Per*_*ulf 141
使用psql外壳和:
\deu[+] [PATTERN] 如:
postgres=# \deu+
List of user mappings
Server | User name | FDW Options
--------+-----------+-------------
(0 rows)
Run Code Online (Sandbox Code Playgroud)
对于所有用户:
postgres=# \du
List of roles
Role name | Attributes | Member of
------------+------------------------------------------------+-----------
chpert.net | | {}
postgres | Superuser, Create role, Create DB, Replication | {}
Run Code Online (Sandbox Code Playgroud)
也比如 MySQL,你可以这样做:
$ psql -c "\du"
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
chpert | | {}
postgres | Superuser, Create role, Create DB, Replication | {}
test | | {}
Run Code Online (Sandbox Code Playgroud)
ILM*_*o_7 10
要将输出限制为仅用户名,只需从psqlshell 或本地 shell/终端执行以下操作
psql -c "SELECT u.usename AS "User Name" FROM pg_catalog.pg_user u;"
Run Code Online (Sandbox Code Playgroud)
而快速方法,如上一个答案中所指出的,显示 3 列;包括用户名、角色属性列表和角色组成员。
psql -c "\du"
Run Code Online (Sandbox Code Playgroud)
最后,正如在随后的回答中所指出的,PostgreSQL 命令在后台运行以\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;
Run Code Online (Sandbox Code Playgroud)
(当你输入 \du 时 psql 在幕后做了什么)
最后一部分是从PostgreSQL Mailing List复制的。
小智 5
为了更简单的答案...
从 psql 内部:
\du
Run Code Online (Sandbox Code Playgroud)
从航站楼:
psql -c '\du'
Run Code Online (Sandbox Code Playgroud)
它帮助我记住,d经常用来描述某些东西,而u则代表用户。