Thread: weird initdb output

weird initdb output

From
Geoffrey
Date:
I wrote a script that creates a new database from an existing backup.
Works great on my machine.  Another user tries to use it and sees the
following output from initdb:

could not change directory to "/root"
The files belonging to this database system will be owned by user
"postgres".
This user must also own the server process.
.
.

Why is it trying to change directory to /root???  Running as the
postgres user.

Any assistance would be appreciated.
--
Until later, Geoffrey

"I predict future happiness for America if they can prevent
the government from wasting the labors of the people under
the pretense of taking care of them."
- Thomas Jefferson

Re: weird initdb output

From
John R Pierce
Date:
On 06/28/10 11:41 AM, Geoffrey wrote:
> I wrote a script that creates a new database from an existing backup.
> Works great on my machine.  Another user tries to use it and sees the
> following output from initdb:
>
> could not change directory to "/root"
> The files belonging to this database system will be owned by user
> "postgres".
> This user must also own the server process.
> .
> .
>
> Why is it trying to change directory to /root???  Running as the
> postgres user.
>
> Any assistance would be appreciated.

maybe he did an "su postgres" and not a "su - postgres" ?  the latter
does the equiv of a login, while the first only changes hte effective user.



Re: weird initdb output

From
Tom Lane
Date:
Geoffrey <lists@serioustechnology.com> writes:
> I wrote a script that creates a new database from an existing backup.
> Works great on my machine.  Another user tries to use it and sees the
> following output from initdb:

> could not change directory to "/root"
> The files belonging to this database system will be owned by user
> "postgres".
> This user must also own the server process.
> .
> .

> Why is it trying to change directory to /root???

IIRC, part of the startup process involves chdir'ing to where the initdb
executable is and then chdir'ing back to whatever directory had been
current when you called initdb.  I speculate the other guy was root and
did "su postgres" not "su - postgres", so his cwd was still root's home
directory.

This might be harmless as long as you gave an absolute path for PGDATA
to initdb, but I'd still recommend using su - not just su.

            regards, tom lane

Re: weird initdb output

From
Geoffrey
Date:
Tom Lane wrote:
> Geoffrey <lists@serioustechnology.com> writes:
>> I wrote a script that creates a new database from an existing backup.
>> Works great on my machine.  Another user tries to use it and sees the
>> following output from initdb:
>
>> could not change directory to "/root"
>> The files belonging to this database system will be owned by user
>> "postgres".
>> This user must also own the server process.
>> .
>> .
>
>> Why is it trying to change directory to /root???
>
> IIRC, part of the startup process involves chdir'ing to where the initdb
> executable is and then chdir'ing back to whatever directory had been
> current when you called initdb.  I speculate the other guy was root and
> did "su postgres" not "su - postgres", so his cwd was still root's home
> directory.
>
> This might be harmless as long as you gave an absolute path for PGDATA
> to initdb, but I'd still recommend using su - not just su.

Appears this was exactly the case.  I do specify absolute path for
PGDATA, thanks.

--
Until later, Geoffrey

"I predict future happiness for America if they can prevent
the government from wasting the labors of the people under
the pretense of taking care of them."
- Thomas Jefferson