连接服务文件允许将 libpq 连接参数与单个服务名称相关联。然后可在 libpq 连接字符串中指定该服务名称,并将使用关联设置。这允许修改连接参数,而无需重新编译 libpq 使用的应用程序。还能使用 PGSERVICE
环境变量指定服务名称。
可以在按用户划分的服务文件或系统级文件中定义服务名称。如果用户和系统文件中都存在相同服务名称,则用户文件优先。默认情况下,按用户划分的服务文件的名称为 ~/.pg_service.conf
。在 Microsoft Windows 上,它名为 %APPDATA%\postgresql\.pg_service.conf
(其中 %APPDATA%
指的是用户配置文件中的应用程序数据子目录)。可以通过设置环境变量 PGSERVICEFILE
指定其他文件名。系统级文件的名称为 pg_service.conf
。默认情况下,它位于 PostgreSQL 安装的 etc
目录中(使用 pg_config --sysconfdir
精确识别该目录)。可以通过设置环境变量 PGSYSCONFDIR
指定其他目录,但不能指定不同文件名。
这两个服务文件都使用 “ INI 文件” 格式,其中部分名称为服务名称,参数为连接参数;有关列表,请参阅 第 32.1.2 节。例如
# comment [mydb] host=somehost port=5433 user=admin
PostgreSQL 安装的 share/pg_service.conf.sample
中提供了一个示例文件。
从服务文件获取的连接参数与从其他来源获取的参数相结合。服务文件设置会覆盖对应的环境变量,反过来则会由直接提供的值在连接字符串中覆盖。例如,使用上述服务文件,连接字符串 service=mydb port=5434
将使用主机 somehost
、端口 5434
、用户 admin
,以及由环境变量或内置默认值设定的其他参数。