From 6eefe2ce463f55bb3b8da7d561ad2f75053189e0 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 26 Mar 2023 14:48:04 -0400 Subject: [PATCH] Doc: clarify introduction to database roles. Word-smith section 22.1 ("Database Roles") a little bit in hopes of removing confusion about how the bootstrap superuser's name is chosen. While here, I couldn't help noticing that the claim that the bootstrap superuser is the only initially-existing role has been a lie since we started to invent predefined roles. We don't want too much detail in this very introductory text, but it seems worth changing it to say that it's the only initially-existing login-capable role. Per documentation comment from Maja Zaloznik. Discussion: https://postgr.es/m/167931662853.3349090.18217722739345182859@wrigleys.postgresql.org --- doc/src/sgml/user-manag.sgml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/doc/src/sgml/user-manag.sgml b/doc/src/sgml/user-manag.sgml index 93978e550e9..d99dcb2017f 100644 --- a/doc/src/sgml/user-manag.sgml +++ b/doc/src/sgml/user-manag.sgml @@ -88,9 +88,13 @@ dropuser name To determine the set of existing roles, examine the pg_roles - system catalog, for example + system catalog, for example: SELECT rolname FROM pg_roles; + + or to see just those capable of logging in: + +SELECT rolname FROM pg_roles WHERE rolcanlogin; The program's \du meta-command is also useful for listing the existing roles. @@ -98,11 +102,12 @@ SELECT rolname FROM pg_roles; In order to bootstrap the database system, a freshly initialized - system always contains one predefined role. This role is always - a superuser, and by default (unless altered when running - initdb) it will have the same name as the - operating system user that initialized the database - cluster. Customarily, this role will be named + system always contains one predefined login-capable role. This role + is always a superuser, and by default it will have + the same name as the operating system user that initialized the + database cluster, unless another name is specified while + running initdb. + It is common, but not required, to arrange for this role to be named postgres. In order to create more roles you first have to connect as this initial role. -- 2.30.2