17.3. 连接和认证

17.3.1. 连接设置

listen_addresses (string)

声明服务器监听客户端应用连接的 TCP/IP 地址。 数值是从一个逗号分隔的主机名和/或数字IP地址获取的。 特殊的条目 * 对应所有可用 IP 接口。 如果这个列表是空的,那么服务器不会监听任何 IP 接口,这种情况下, 只有 Unix 域套接字可以用于连接数据库。 缺省值是 localhost, 它只允许进行本地 "loopback" 连接。这个参数只能在服务器启动的时候设置。

port (integer)

服务器监听的 TCP 端口;缺省是 5432。请注意同一个端口号用于服务器监听的所有 IP 地址。 这个参数只能在服务器启动的时候设置。

max_connections (integer)

决定和数据库连接的并发连接数目的最大值。 缺省通常是 100,但是如果你的内核设置不支持这么大(在 initdb 的时候判断), 可能会比这个数少。这个参数只能在服务器启动的时候设置。

增大这个参数可能导致 PostgreSQL 要求更多的 System V 共享内存或者信号灯, 可能超过你的操作系统缺省配置的许可值。必要的话,参阅 Section 16.4.1 获取有关如何调节这个参数的信息。

superuser_reserved_connections (integer)

决定为 PostgreSQL 超级用户连接而保留的连接"槽位"。 一次最多可以同时激活 max_connections 个连接。 在活跃的并发连接到了 max_connections 减去 superuser_reserved_connections 的时候, 新的连接就只能由超级用户发起了。

缺省值是 2。这个值必须小于 max_connections 的值。 这个参数只能在服务器启动的时候设置。

unix_socket_directory (string)

声明服务器监听客户端应用连接来临的 Unix 域套接字的目录。 缺省通常是 /tmp,但是缺省值可以在制作的时候修改。 这个值只能在服务器启动的时候设置。

unix_socket_group (string)

设置 Unix 域套接字的组所有者。(套接字的所属用户总是启动服务器的用户。) 与选项 unix_socket_permissions 一起,就可以用于控制套接字类型的附加的访问控制。 缺省的时候,这是一个空字串,表示使用当前用户的缺省组。这个选项只能在服务器启动的时候设置。

unix_socket_permissions (integer)

设置 Unix 域套接字的访问权限。Unix 域套接字使用普通的 Unix 文件系统权限集。 这个选项值应该是数值的形式,也就是那种 Unix 域套接字调用 chmodumask 接受的形式。(要使用客户化的八进制格式,数字必须以0 (零)开头。)

缺省的权限是 0777,意思是任何人都可以连接。 合理的候选是 0770(只有用户和同组的人可以访问, 又见 unix_socket_group)和 0700 (只有用户)。(请注意,对于 Unix 域套接字,只有写权限有意义,设置或者撤销读和执行权限没有任何意义。)

这个访问控制机制与 Chapter 20 里描述的独立。

这个选项只能在服务器启动的时候设置。

bonjour_name (string)

声明 Bonjour 广播地址。缺省的时候,使用计算机名,声明是 ''。 如果编译时没有打开 Bonjour 那么忽略这个参数。 这个选项只能在服务器启动的时候设置。

tcp_keepalives_idle (integer)

在那些支持 TCP_KEEPIDLE 套接字选项的系统上, 声明发送保持活跃信号的间隔秒数,不发送保持活跃信号,连接就会处于闲置状态。 0 值的话则使用系统缺省。如果不支持 TCP_KEEPIDLE, 这个参数必须为 0。在通过 Unix 域套接字进行的连接上,这个选项被忽略。

tcp_keepalives_interval (integer)

在那些支持 TCP_KEEPINTVL 套接字选项的系统上, 以秒数声明在重新传输之间等待响应的时间。0 值表示使用系统缺省。 如果不支持 TCP_KEEPINTVL,这个参数必须为 0。 在通过 Unix 域套接字进行的连接上,这个选项被忽略。

tcp_keepalives_count (integer)

在支持 TCP_KEEPCNT 选项的系统上,声明在人为连接断掉之前可以丢失多少个保持活跃信号。 0 值表示使用系统缺省。如果不支持 TCP_KEEPCNT,这个参数必须是 0. 这个选项在通过使用 Unix 域套接字建立的连接上被忽略。

17.3.2. 安全和认证

authentication_timeout (integer)

完成客户端认证的最长时间,以秒计。如果一个客户端没有在这段时间里完成认证协议, 服务器将中断连接。这样就避免了出问题的客户端无限制地占据连接资源。 这个选项只能在服务器启动的时候设置或者在 postgresql.conf 里设置。 缺省是 60。

ssl (boolean)

打开 SSL 连接。请在使用这个选项之前阅读 Section 16.7。 缺省是 off。这个参数只能在服务器启动的时候设置。

password_encryption (boolean)

CREATE USER 或者 ALTER USER 里声明一个口令, 而又没有写 ENCRYPTED 或者 UNENCRYPTED 的时候,这个选项决定口令是否要加密。 缺省是 on(加密口令)。

krb_server_keyfile (string)

设置 Kerberos 服务器键字文件的位置。参阅 Section 20.2.3 获取细节。 这个参数只能在服务器启动的时候设置。

krb_srvname (string)

设置 Kerberos 服务名。参阅 Section 20.2.3 获取细节。 这个参数只能在服务器启动的时候设置。

krb_server_hostname (string)

设置服务主的主机名部分。这个和 krb_srvname 结合再一起, 用于生成完整的服务主,比如: krb_server_hostname/krb_server_hostname@REALM。

如果没有设置,缺省是允许人和服务主机器在密钥文件里有一条记录。 参阅 Section 20.2.3 获取细节。 这个参数只能在服务器启动的时候设置。

krb_caseins_users (boolean)

设置 Kerberos 用户名是否大小写无相关。缺省是 off(大小写相关)。 这个参数只能在服务器启动的时候设置。

db_user_namespace (boolean)

这样就允许每个数据库的用户名。缺省是关闭的。

如果这是打开的,你应该像 username@dbname 这样创建用户。 在给一个正在连接的客户端传递 username 的时候,必须给用户名附加 @ 和数据库名字, 然后服务器查找该数据库相关的用户名字。请注意,如果你在 SQL 环境里创建包含 @ 的名字时, 你需要用引号包围用户名。

打开这个选项之后,你还是能够创建普通的全局用户。 只要在客户端声明用户的时候附加一个 @ 即可。 在服务器查找这个用户名之前,这个 @ 会被剥除。

注意: 这个特性只是临时试验用途,直到找到一个完全的解决方案。 那个时候,这个选项将被删除。