Thread: weird initdb output
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
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.
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
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