34.17. The Connection Service File

|34.17. The Connection Service File|                |                             |                  |                        |
|:--------------------------------:|----------------|-----------------------------|------------------|------------------------|
|    [Prev](libpq-pgpass.html)     |[Up](libpq.html)|Chapter 34. libpq — C Library|[Home](index.html)| [Next](libpq-ldap.html)|

---

## 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.

---

|[Prev](libpq-pgpass.html)| [Up](libpq.html) |           [Next](libpq-ldap.html)          |
|:------------------------|:----------------:|-------------------------------------------:|
|34.16. The Password File |[Home](index.html)| 34.18. LDAP Lookup of Connection Parameters|

 // \<![CDATA[ \<-- For SVG support if ('WebSocket' in window) { (function() { function refreshCSS() { var sheets = [].slice.call(document.getElementsByTagName("link")); var head = document.getElementsByTagName("head")[0]; for (var i = 0; i \< sheets.length; ++i) { var elem = sheets[i]; head.removeChild(elem); var rel = elem.rel; if (elem.href && typeof rel != "string" || rel.length == 0 || rel.toLowerCase() == "stylesheet") { var url = elem.href.replace(/(&|\\?)\_cacheOverride=\\d+/, ''); elem.href = url + (url.indexOf('?') \>= 0 ? '&' : '?') + '\_cacheOverride=' + (new Date().valueOf()); } head.appendChild(elem); } } var protocol = window.location.protocol === 'http:' ? 'ws://' : 'wss://'; var address = protocol + window.location.host + window.location.pathname + '/ws'; var socket = new WebSocket(address); socket.onmessage = function(msg) { if (msg.data == 'reload') window.location.reload(); else if (msg.data == 'refreshcss') refreshCSS(); }; console.log('Live reload enabled.'); })(); } // ]]\>