On Fri, Nov 12, 2010 at 03:49, Bruce Momjian <bruce@momjian.us> wrote:
> Magnus Hagander wrote:
>> On Fri, Sep 17, 2010 at 05:51, Ashesh Vashi
>> <ashesh.vashi@enterprisedb.com> wrote:
>> > Hi Mark,
>> >
>> > On of my college (Sujeet) has found a way to reproduce the same behaviour.
>> > 1. Installed PG 9.0 on Win XP SP3
>> > 2. Stop the Postgresql-9.0 service from service manager console
>> > 3. Create pgpass.conf in postgres (service account) user's profile with an
>> > incorrect password deliberately.
>> > (Refer: http://www.postgresql.org/docs/8.4/interactive/libpq-pgpass.html)
>> > 4. Now start the postgresql-9.0 service, it will return an error and the
>> > status
>> > ?? shows stopped
>> > 5. However i could connect to the psql shell and get the prompt which means
>> > ??? the server is running.
>>
>> I took a quick look at the code, and from what I can tell this is
>> because PQconnectionNeedsPassword() always returns false if a
>> pgpass.conf has been used. There is no handling the case where pgpass
>> is used, but has an incorrect password.
>>
>> Does anybody recall the specific reason for this? Do we need a way for
>> pg_ctl to figure this out, or do we need to change it in
>> PQconnecitonNeedsPassword()?
>
> I was not able to reproduce this failure on my BSD system using GIT
> head:
>
> $ psql test
> psql: FATAL: password authentication failed for user "postgres"
> password retrieved from file "/u/postgres/.pgpass"
>
> $ pg_ctl status
> pg_ctl: server is running (PID: 710)
> /usr/var/local/pgsql/bin/postgres "-i"
The problem is not in pg_ctl status, it's in pg_ctl start. They're
different codepaths - status never tries to actually connect, it just
checks if the process is alive.
--
Magnus Hagander
Me: http://www.hagander.net/
Work: http://www.redpill-linpro.com/