连接服务文件允许把 libpq
连接参数与一个单一的服务名关联起来。
随后可以在 libpq
连接字符串中用
service
关键字指定该服务名,
相关联的设置就会被使用。
这允许在不重新编译使用 libpq
的应用程序的情况下修改连接参数。
服务名也可以用
PGSERVICE
环境变量指定。
服务名可以在每用户服务文件或系统范围文件中定义。
如果同一个服务名同时存在于用户文件和系统文件中,
用户文件优先。
默认情况下,
每用户服务文件被命名为
~/.pg_service.conf。
在 Microsoft Windows 上,
它被命名为
%APPDATA%\postgresql\.pg_service.conf
(其中
%APPDATA%
指用户配置文件中的 Application Data
子目录)。
可以通过设置环境变量
PGSERVICEFILE
来指定一个不同的文件名。
系统范围文件被命名为
pg_service.conf。
默认情况下它会在
PostgreSQL
安装的
etc
目录中被查找
(使用
pg_config --sysconfdir
来精确识别这个目录)。
可以通过设置环境变量
PGSYSCONFDIR
来指定另一个目录,
但不能指定不同的文件名。
无论哪种服务文件都采用 “INI 文件”格式, 其中节名就是服务名, 参数则是连接参数; 参数列表请参见 Section 32.1.2。 例如:
# comment [mydb] host=somehost port=5433 user=admin
一个示例文件提供在
PostgreSQL
安装的
share/pg_service.conf.sample。
从服务文件获得的连接参数会与从其他来源获得的参数相结合。
服务文件中的设置会覆盖相应的环境变量,
而它自身又会被连接字符串中直接给出的值覆盖。
例如,
使用上面的服务文件,
连接字符串
service=mydb port=5434
将使用主机
somehost、端口
5434、用户
admin,
以及由环境变量或内置默认值设置的其他参数。