连接服务文件允许 libpq 连接参数与一个单一服务名称关联。
那个服务名称可以在一个 libpq 连接字符串里面指定,与其相关的设置将被使用。
这允许在不重新编译 libpq-using 应用的前提下修改连接参数。
服务名称也可以被使用PGSERVICE
环境变量来指定。
服务名称可以在每个用户的服务文件中被定义,或系统范围的文件中定义。
如果用户文件和系统文件中存在相同的服务名称,则用户文件优先。
默认情况下,每个用户的服务文件位于~/.pg_service.conf
;这可以通过设置环境变量PGSERVICEFILE
来覆盖。
系统范围的文件命名为pg_service.conf
。
默认情况下,在PostgreSQL安装的etc
目录中查找(使用pg_config --sysconfdir
精确标识该目录)。
可以通过设置环境变量PGSYSCONFDIR
来指定另一个目录,但不是不同的文件名。
或者服务文件使用一种“INI 文件”格式,其中小节名是服务名并且参数是连接参数。 列表见第 34.1.2 节。例如:
# comment [mydb] host=somehost port=5433 user=admin
在PostgreSQL安装的share/pg_service.conf.sample
中提供了一个例子文件。
从服务文件中获取的连接参数与从其他来源获取的参数相结合。
服务文件设置覆盖相应的环境变量,然后反过来可以由连接字符串中直接给出的值覆盖。
例如,使用上面的服务文件,连接字符串service=mydb port=5434
将使用主机somehost
,端口5434
,
用户admin
,以及由环境变量或内置默认所设置的其他参数。