PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

32.17. 连接服务配置文件 #

连接服务文件允许把 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, 以及由环境变量或内置默认值设置的其他参数。