The connection service file allows libpq connection parameters to be
associated with a single service name. That service name can then be
specified in a libpq connection string, and the associated settings will be
used. This allows connection parameters to be modified without requiring
a recompile of the libpq-using application. The service name can also be
specified using the PGSERVICE
environment variable.
Service names can be defined in either a per-user service file or a
system-wide file. If the same service name exists in both the user
and the system file, the user file takes precedence.
By default, the per-user service file is named
~/.pg_service.conf
.
On Microsoft Windows, it is named
%APPDATA%\postgresql\.pg_service.conf
(where
%APPDATA%
refers to the Application Data subdirectory
in the user's profile). A different file name can be specified by
setting the environment variable PGSERVICEFILE
.
The system-wide file is named pg_service.conf
.
By default it is sought in the etc
directory
of the PostgreSQL installation
(use pg_config --sysconfdir
to identify this
directory precisely). Another directory, but not a different file
name, can be specified by setting the environment variable
PGSYSCONFDIR
.
Either service file uses an “INI file” format where the section name is the service name and the parameters are connection parameters; see Section 36.1.2 for a list. For example:
# comment [mydb] host=somehost port=5433 user=admin
An example file is provided in
the PostgreSQL installation at
share/pg_service.conf.sample
.
Connection parameters obtained from a service file are combined with
parameters obtained from other sources. A service file setting
overrides the corresponding environment variable, and in turn can be
overridden by a value given directly in the connection string.
For example, using the above service file, a connection string
service=mydb port=5434
will use
host somehost
, port 5434
,
user admin
, and other parameters as set by
environment variables or built-in defaults.