You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中\dg与\du的区别及是否会被废弃

PostgreSQL中\dg与\du命令的疑问解答

操作与现象

在PostgreSQL的psql客户端中,分别执行\dg和\du命令查看角色(用户),输出完全一致:

\dg命令输出

postgres=# \dg
                             List of roles
 Role name |                         Attributes
-----------+------------------------------------------------------------
 anna      |
 john      |
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS

\du命令输出

postgres=# \du
                             List of roles
 Role name |                         Attributes
-----------+------------------------------------------------------------
 anna      |
 john      |
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS

查看psql帮助(\?)时,两者的说明也完全相同:

postgres=# \?
...
Informational
  ...
  \dg[S+] [PATTERN]      list roles
  ...
  \du[S+] [PATTERN]      list roles
  ...

问题解答

1. \dg和\du命令之间存在什么区别?

两者没有功能差异,完全等价。

这种等价性源于PostgreSQL的版本演进:早期版本中,\du用于查看数据库用户(user),\dg用于查看数据库组(group);但后续版本统一了用户和组的概念,将两者合并为角色(role)——角色可配置登录权限作为用户使用,也可被其他角色继承作为组使用。为了兼容老用户的操作习惯,PostgreSQL保留了这两个命令,让它们指向同一功能:列出所有角色。

2. 若两者功能完全相同,当前或未来是否会有其中一个被废弃?

目前PostgreSQL官方没有废弃任一命令的计划。

这两个命令都是psql客户端的常用快捷指令,保留它们是为了适配不同用户的使用习惯:部分用户延续早期操作习惯使用\du,另一部分用户更倾向于贴合当前角色概念的\dg。除非未来psql客户端有重大设计变更,否则它们会一直作为等价命令存在。


内容的提问来源于stack exchange,提问作者Super Kai - Kazuya Ito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 02:58:35