受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

19.14. 连接和认证 #

19.14.1. 连接设置 #

listen_addresses #

指定服务器监听客户端连接时使用的 TCP/IP 地址。值采用逗号分隔的主机名和/或数值 IP 地址列表。 特殊项 * 表示所有可用的 IP 接口。0.0.0.0 表示监听全部 IPv4 地址, :: 表示监听全部 IPv6 地址。如果列表为空,服务器将完全不监听任何 IP 接口, 此时只能通过 Unix 域套接字连接。如果列表不为空,只要至少有一个 TCP/IP 地址可监听,服务器就会启动。 任何无法打开的 TCP/IP 地址都会给出警告。默认值是 localhost, 只允许本地 TCP/IP 回环连接。

客户端认证(Chapter 20)控制谁可以访问服务器,而 listen_addresses 控制哪些接口接受连接尝试,这有助于减少在不安全网络接口上的恶意重复连接请求。 此参数只能在服务器启动时设置。

port #

服务器监听的 TCP 端口,默认是 5432。请注意,服务器监听的所有 IP 地址都使用同一个端口号。 此参数只能在服务器启动时设置。

max_connections #

决定数据库服务器允许的最大并发连接数。默认值通常是 100 个连接,但如果内核设置不支持这一点, 该值可能会更小(由 initdb 期间的检测决定)。此参数只能在服务器启动时设置。

当运行备库时,这个参数必须设置为与主库相同或更高的值,否则备库上将不允许查询。

superuser_reserved_connections #

决定为 PostgreSQL 超级用户保留多少个连接槽位。 同时活跃的连接数最多只能达到 max_connections。 当活跃连接数达到 max_connections 减去 superuser_reserved_connections 时, 新连接只接受超级用户,且不会再接受新的复制连接。

默认值是 3 个连接。该值必须小于 max_connections。此参数只能在服务器启动时设置。

unix_socket_directories #

指定服务器监听客户端连接时使用的 Unix 域套接字目录。通过以逗号分隔的多个目录,可以创建多个套接字。 各项之间的空白会被忽略;如果目录名中需要包含空白或逗号,请用双引号括起来。 空值表示不监听任何 Unix 域套接字,此时只能使用 TCP/IP 套接字连接服务器。

@ 开头的值表示应在抽象命名空间中创建 Unix 域套接字(目前仅 Linux 支持)。 此时该值并不是一个目录,而是用于计算实际套接字名的前缀,方式与文件系统命名空间相同。 虽然抽象套接字名前缀可以自由选择,但通常仍使用类似文件系统的值,例如 @/tmp

默认值通常是 /tmp,但可在编译时改变。在 Windows 上,默认值为空, 这表示默认不会创建 Unix 域套接字。此参数只能在服务器启动时设置。

除了套接字文件本身(命名为 .s.PGSQL.nnnn, 其中 nnnn 是服务器端口号)之外,每个 unix_socket_directories 目录中还会创建一个名为 .s.PGSQL.nnnn.lock 的普通文件。 这两个文件都不应手工删除。抽象命名空间中的套接字不会创建锁文件。

unix_socket_group #

设置 Unix 域套接字所属的组。套接字的属主始终是启动服务器的用户。与 unix_socket_permissions 配合使用时,它可以作为 Unix 域连接的额外访问控制机制。 默认值是空字符串,表示使用服务器用户的默认组。此参数只能在服务器启动时设置。

Windows 不支持此参数,任何设置都会被忽略。抽象命名空间中的套接字没有文件属主,因此这种情况下该设置也会被忽略。

unix_socket_permissions #

设置 Unix 域套接字的访问权限。Unix 域套接字使用标准 Unix 文件系统权限。参数值应使用 chmodumask 接受的八进制形式表示;如果使用自定义八进制格式,数字必须以 0 开头。

默认权限是 0777,表示任何人都可以连接。常见的合理取值是 0770 (只有属主和同组用户可访问,见 unix_socket_group)以及 0700 (只有属主可访问)。请注意,对 Unix 域套接字来说,只有写权限真正重要,因此没有读取和执行权限的区别。

此访问控制机制与 Chapter 20 中的用户认证无关。

此参数只能在服务器启动时设置。

对完全忽略套接字权限的系统,此参数没有效果,尤其是 Solaris 10 及以上版本。在这些系统上, 可以把 unix_socket_directories 指向一个只允许特定用户搜索的目录,以获得类似效果。

抽象命名空间中的套接字没有文件权限,因此这种情况下该设置也会被忽略。

bonjour #

通过 Bonjour 广播服务器存在。默认值为关闭。此参数只能在服务器启动时设置。

bonjour_name #

指定 Bonjour 服务名。空字符串 ''(默认值)表示使用计算机名。 如果编译时未启用 Bonjour 支持,则此参数会被忽略。此参数只能在服务器启动时设置。

tcp_keepalives_idle #

指定在网络活动停止多久之后,操作系统应向客户端发送 TCP keepalive 消息。 如果指定值没有单位,则按秒计算。值 0(默认值)表示使用操作系统默认值。 在 Windows 上,设为 0 会把该参数设为 2 小时,因为 Windows 无法读取系统默认值。 该参数仅在支持 TCP_KEEPIDLE 或等效套接字选项的系统以及 Windows 上可用;其他系统必须为零。 通过 Unix 域套接字连接时,此参数会被忽略,并始终视为零。

tcp_keepalives_interval #

指定未被客户端确认的 TCP keepalive 消息在多久之后应当重传。 如果指定值没有单位,则按秒计算。值 0(默认值)表示使用操作系统默认值。 在 Windows 上,设为 0 会把该参数设为 1 秒,因为 Windows 无法读取系统默认值。 该参数仅在支持 TCP_KEEPINTVL 或等效套接字选项的系统以及 Windows 上可用;其他系统必须为零。 通过 Unix 域套接字连接时,此参数会被忽略,并始终视为零。

tcp_keepalives_count #

指定在连接被判定为断开之前,允许重试的 keepalive 消息次数。默认值和系统默认值取决于平台。 通过 Unix 域套接字连接时,此参数会被忽略,并始终视为零。

tcp_user_timeout #

指定在发送了未确认的数据后,TCP 连接允许保持未完成状态的最长时间。 如果指定值没有单位,则按毫秒计算。值 0 表示使用操作系统默认值。 该参数仅在支持 TCP_USER_TIMEOUT 套接字选项的系统上可用;通过 Unix 域套接字连接时会被忽略。

client_connection_check_interval #

指定服务器检查客户端连接是否仍然存活的时间间隔。 如果客户端连接已经断开,服务器会尽快终止后端进程并清理资源。 如果指定值没有单位,则按秒计算。默认值为 0,表示不做额外检查。

下列参数控制客户端认证方式以及与 SSL 连接相关的行为。

authentication_timeout #

指定等待客户端完成认证的最长时间。超时后,服务器会断开连接。 如果指定值没有单位,则按秒计算。默认值为 1 分钟。此参数只能在服务器启动时设置。

password_encryption #

指定用来加密新密码的算法。可用值取决于编译时支持的算法;默认值应当与当前版本的安全默认值一致。 该参数只影响新写入的密码,不会重新加密已有密码。

krb_server_keyfile #

指定 Kerberos 服务器密钥文件的位置。此参数只能在服务器启动时设置。

krb_caseins_users #

指定 Kerberos 用户名是否按大小写不敏感方式处理。默认值为关闭。

db_user_namespace #

开启后,用户名会带有数据库名前缀,从而允许不同数据库中的同名用户共存。默认值为关闭。

ssl #

是否启用 SSL 连接。默认值为关闭。此参数只能在服务器启动时设置。

ssl_ca_file #

指定用于验证客户端证书的 CA 文件。默认值为空。此参数只能在服务器启动时设置。

ssl_cert_file #

指定服务器证书文件。默认值为 server.crt。此参数只能在服务器启动时设置。

ssl_crl_file #

指定用于验证证书吊销状态的 CRL 文件。默认值为空。此参数只能在服务器启动时设置。

ssl_crl_dir #

指定用于验证证书吊销状态的 CRL 目录。默认值为空。此参数只能在服务器启动时设置。

ssl_key_file #

指定服务器私钥文件。默认值为 server.key。此参数只能在服务器启动时设置。

ssl_ciphers #

指定 SSL 连接允许使用的密码套件列表。默认值由编译时和运行时环境决定。此参数只能在服务器启动时设置。

ssl_prefer_server_ciphers #

是否优先使用服务器端的密码套件顺序。默认值为关闭。此参数只能在服务器启动时设置。

ssl_ecdh_curve #

指定用于 ECDH 密钥交换的椭圆曲线名称。默认值取决于编译时使用的 SSL 库。此参数只能在服务器启动时设置。

ssl_min_protocol_version #

指定允许的最低 SSL/TLS 协议版本。默认值由运行时库决定。此参数只能在服务器启动时设置。

ssl_max_protocol_version #

指定允许的最高 SSL/TLS 协议版本。默认值由运行时库决定。此参数只能在服务器启动时设置。

ssl_dh_params_file #

指定 Diffie-Hellman 参数文件。默认值为空。此参数只能在服务器启动时设置。

ssl_passphrase_command #

指定用于获取私钥口令的命令。默认值为空。此参数只能在服务器启动时设置。

ssl_passphrase_command_supports_reload #

指定 ssl_passphrase_command 是否支持在重新加载配置时再次调用。默认值为关闭。

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。