## 34.17. The Connection Service File

[]()[]()[]()

 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 located at `~/.pg_service.conf`; this can be overridden 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 34.1.2](libpq-connect.html#LIBPQ-PARAMKEYWORDS) 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.

