Re: pg_upgrade fails for non-postgres user
От | Magnus Hagander |
---|---|
Тема | Re: pg_upgrade fails for non-postgres user |
Дата | |
Msg-id | AANLkTinSjUPo0zQLznEeYDBTnO1-oyYRJEyJ3EDwds-g@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: pg_upgrade fails for non-postgres user (Bruce Momjian <bruce@momjian.us>) |
Ответы |
Re: pg_upgrade fails for non-postgres user
|
Список | pgsql-hackers |
On Tue, Feb 1, 2011 at 02:25, Bruce Momjian <bruce@momjian.us> wrote: > Magnus Hagander wrote: >> I just tried doing pg_upgrade on a database when logged in as user >> "mha" rather than "postgres" on my system. And it failed. Even though >> the db was initialized with superuser "mha". The reason for this was >> that pg_upgrade tried to connect to the database "mha" (hardcoded to >> be the db username), and that certainly didn't exist. >> >> When that was fixed, I realized the psql command to create the >> datanbases connect to database "template1" only to immediately switch >> to database "postgres", which also seems rather pointless. >> >> Attach patch makes it connect to the "postgres" database instead of >> $USER, and then also changes the psql command to actually use it. >> >> I know way too little about pg_upgrade to tell if this is fully safe, >> but it does fix the problem in my installation. > > I have found that this problem only affects PG 9.1 and is not part of > released PG 9.0 because we don't restore pg_authid in 9.0 (we don't need > to because we have no pg_largeobject_metadata table in PG 8.4). Ah, that explains why we haven't seen reports on this before. > I have applied a modified version of your patch to always retore into > the 'postgres' database rather than the OS user. I thought we created > an os-user-named database, but it seems that database is always called > 'postgres' but is owned by the OS user. That seems kind of > inconsistent, but no matter. The whole reason for the postgres database is to provide a *predictable* name for people and tools to connect to, and possibly store things in. template1 works reasonably well for "connect to", but not for "store in" - because it gets duplicated out to all new databases after that. Which is also why it's a good reason to have it the default fo r"connect to" either - because people will create object there by mistake, and then get it duplicated out to all new databases. -- Magnus Hagander Me: http://www.hagander.net/ Work: http://www.redpill-linpro.com/
В списке pgsql-hackers по дате отправления: