Re: Pgagent is not reading pgpass file either in Windows or Linux.

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: nageswara Bandla <nag(dot)bandla(at)gmail(dot)com>, pgsql-general(at)postgresql(dot)org
Subject: Re: Pgagent is not reading pgpass file either in Windows or Linux.
Date: 2018-05-29 20:32:46
Message-ID: 5595335e-32e8-80da-9c65-8d79fce554a7@aklaver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 05/29/2018 12:14 PM, nageswara Bandla wrote:
> The intention of this post is to find out ways to run pgagent without
> passing password in its connection string.
>
> *Windows:*
>
> I have installed pgagent on windows and configured to run under Local
> System account.
>
> Command:-
>
> C:\PostgreSQL\bigsql\pgagent\bin\pgagent.exeINSTALL pgagent -l 2 -u
> LocalSystem hostaddr=127.0.0.1 dbname=postgresdb user=postgres
>
> I have logged into my windows account; where my profile has pgpass.conf
> in %APPDATA%/postgresql/pgpass.conf file.
>
> 127.0.0.1:5432:*:postgres:postgres1
>
> Pgagent is not started and throws error –“The pgagent service on Local
> Computer started and then stopped. Some services stop automatically if
> they are not in use by other services or programs”.
>
> Eventvwr log messages have these error messages - “Couldn't create the
> primary connection (attempt 10): fe_sendauth: no password supplied”
>
> *PGPASSFILE env variable:*
>
> As per the link-
> (https://www.postgresql.org/docs/9.6/static/libpq-pgpass.html) I set
> PGPASSFILE environment variable to point to pgpass.conf location. Even
> then, it’s throwing same above error message. I have found out that
> pgagent is not reading pgpass.conf file when configured under
> LocalSystem account.
>
> When I change the properties of the pgagent service to run under my
> login user account. Then, it’s reading pgpass.conf file under
> %APPDATA%/postgresql/pgpass.conf.
>
> I am clueless, why pgagent is not honoring PGPASSFILE env variable.

My guess because the LocalSystem user does not have permissions on your:

%APPDATA%/postgresql/pgpass.conf

file. This seems to be confirmed by it working when you run pgagent as
the login user.

Also:

passfile

Specifies the name of the file used to store passwords (see Section
33.15). Defaults to ~/.pgpass, or %APPDATA%\postgresql\pgpass.conf on
Microsoft Windows. (No error is reported if this file does not exist.)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

>
> *Linux:*
>
> In Linux, I have installed pgagent_96 using yum command. And tried to
> run pgagent using command /etc/init.d/pgagent_96 from postgres user account.

This is going to depend on what pgagent_96 is doing?

>
> It fails with error message – “WARNING: Couldn't create the primary
> connection (attempt 2): fe_sendauth: no password supplied”

What happens if from the terminal as the postgres user you do?:

/path/to/pgagent 'connection string'

>
> I made sure that I have .pgpass configuration file with 0600 permissions
> in postgres user home directory.
>
> I have tried by defining PGPASSFILE env variable in postgres user
> account. But it’s not working.
>
> Pgagent is starting only when we pass password in it’s connection
> string. But which is not a good practice at all.
>
>

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2018-05-29 21:09:14 Re: How to drop a value from an ENUM?
Previous Message nageswara Bandla 2018-05-29 19:14:21 Pgagent is not reading pgpass file either in Windows or Linux.