Kevin Grittner wrote:
> > Bruce Momjian wrote:
> > Tom Lane wrote:
> >> Bruce Momjian writes:
> >>> One question I have is why we even bother to allow the database
> >>> username to be specified? Shouldn't we just hard-code that to
> >>> 'postgres'?
> >>
> >> Only if you want to render pg_upgrade unusable by a significant
> >> fraction of people. "postgres" is not the hard wired name of the
> >> bootstrap superuser.
> >
> > I was really wondering if I should be using that hard-coded name,
> > rather than allowing the user to supply it. They have to compile in
> > a different name, and I assume that name is accessible somewhere.
>
> At home, on my ubuntu machine, I built and ran initdb without
> specifying a superuser. It used my OS login of "kevin". Then,
>
> test=# \du
> List of roles
> Role name | Attributes | Member
> of
> -----------+------------------------------------------------+--------
> ---
> kevin | Superuser, Create role, Create DB, Replication | {}
>
> test=# create user xxx superuser;
> CREATE ROLE
> test=# \c test xxx
> You are now connected to database "test" as user "xxx".
> test=# alter user kevin rename to yyy;
> ALTER ROLE
> test=# \du
> List of roles
> Role name | Attributes | Member
> of
> -----------+------------------------------------------------+--------
> ---
> xxx | Superuser, Replication | {}
> yyy | Superuser, Create role, Create DB, Replication | {}
>
> If I run pg_upgrade now, what will it pick? How?
Good point --- you would need the user flag in pg_upgrade. Thanks.
-- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB
http://enterprisedb.com
+ It's impossible for everything to be true. +