On Microsoft Windows, the pgpass file is located as followed:
On Microsoft Windows the file is named %APPDATA%\postgresql\pgpass.conf (where %APPDATA% refers to the Application Data subdirectory in the user's profile).
source: https://www.postgresql.org/docs/current/libpq-pgpass.html
When I create a subscription, as shown below, I do not provided a password in the connection string.
CREATE SUBSCRIPTION alltables
CONNECTION 'host=192.168.1.5 port=5432 user=replicator1 dbname=test1'
PUBLICATION alltables;
Instead, I want the password to be stored in a pgpass.conf file with restricted access.
After a few tries, I have noticed that in the case of creating a subscription, the pgpass.conf is not expected to be found in the user directory of the Windows user running the CREATE SUBSCRIPTION command. In other words, if my Windows 10 user name is foobar the file is not expected to be C:\Users\foobar\AppData\Roaming\postgresql\pgpass.conf. Instead it seems to be expected in the user directory of the Windows user running the PostgreSQL program.
I have found this by adding passfile=C:\\Users\\foobar\\AppData\\Roaming\\postgresql\\pgpass.conf in the connection string and granting read permissions to the NETWORK SERVICE user (the user that runs the postgres.exe processes). In that case, the subscription is created. But if I remove the passfile option from the connection string then the terse ERROR: could not connect to the publisher: fe_sendauth: no password supplied error message is returned.
So, where would %APPDATA%\postgresql\pgpass.conf point to in that case? Said differently, where should the pgpass.conf file be in that case?