Re: Pgagent is not reading pgpass file either in Windows or Linux. - Mailing list pgsql-general
From | Adrian Klaver |
---|---|
Subject | Re: Pgagent is not reading pgpass file either in Windows or Linux. |
Date | |
Msg-id | 5595335e-32e8-80da-9c65-8d79fce554a7@aklaver.com Whole thread Raw |
In response to | Pgagent is not reading pgpass file either in Windows or Linux. (nageswara Bandla <nag.bandla@gmail.com>) |
Responses |
Re: Pgagent is not reading pgpass file either in Windows or Linux.
|
List | 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.klaver@aklaver.com
pgsql-general by date: