下面的环境变量可以用于选择缺省的连接参数值,
这些值将被
PQconnectdb
或
PQsetdbLogin
使用 — 如果调用代码没有直接声明相应值的话。
比如,这些(环境变量)可以避免把麻烦的数据库名强加入简单的应用程序的硬代码里面。
PGHOST 设置数据库服务器名。 如果它以一个斜杠开头,那么它声明一个 Unix 域套接字而不是 TCP/IP 通讯; 其值就是该套接字文件存储的目录(在缺省安装中,这个目录会是 /tmp)。
PGHOSTADDR 声明数据库服务器地数值 IP 地址。
我们可以额外设置这个环境变量,或者是替代 PGHOST,以避免 DNS 查找的过热。
参阅这个参数的文档,在上面的 PQconnectdb
里,获取它们的相互关系的细节。
如果既没有声明 PGHOST 也没有声明 PGHOSTADDR, 缺省的行为是使用一个 Unix 域套接字连接;或者在没有 Unix 域套接字的机器上, libpq 将试图与 localhost 连接。
如果服务器要求口令认证,PGPASSWORD 设置使用的口令。 因为安全原因,我们不建议使用这个环境变量(有些操作系统允许非 root 用户使用 ps 查看进程的环境变量。);应该考虑使用 ~/.pgpass代替(参阅Section 28.12)。
PGPASSFILE 声明用于查找的口令文件。如果没有设置,则缺省为 ~/.pgpass(参阅 Section 28.12)。
PGREALM 设置与PostgreSQL一起使用的 Kerberos 领地 — 如果该领地与本地领地不同的话。 如果设置了 PGREALM ,libpq 应用将试图用这个域(realm)与服务器进行认证并且使用独立的门票文件(ticket files)以避免与本地的门票文件冲突。 只有在服务器选择了 Kerberos 认证时才使用这个环境变量。 (译注:门票文件是 Kerberos认证协议中用于交换密钥的一个文件/服务器。)
PGSSLMODE 设置该连接是否与服务器协商在 SSL 连接, 以及 SSL 连接的优先级。 有四种模式:disable 将只进行无加密的 SSL 连接尝试; allow 将进行协商,首先尝试非 SSL 连接,如果这个失败, 再尝试 SSL 连接;prefer (缺省)将进行协商,首先尝试 SSL 连接, 然后如何这个失败,将尝试一个普通的非SSL连接;require 将只尝试SSL 连接。 如果编译 PostgreSQL 的时候没有打开 SSL 支持,那么使用 require 选项将导致一个错误, 而使用 allow 和 prefer 将被接受, 但是 libpq 实际上不会准备进行 SSL 连接。
PGREQUIRESSL设置一个连接是否必须在 SSL 上进行。 如果设置为 "1",那么如果服务器不支持 SSL 连接,那么 libpq 将拒绝连接(等效于 sslmode 为 prefer)。 因为有了 sslmode 的设置,所以这个选项已经废弃了,这个选项只有在 PostgreSQL 编译的时候打开了 SSL 支持才能用。
PGCONNECT_TIMEOUT 设置在等待与 PostgreSQL 服务器连接的时候,libpq 等待的最大的秒数。 如果未设置或者为 0,libpq 将不停等待。 我们不建议把这个值设置得少于 2 秒。
下面的环境变量可以用于为每个PostgreSQL 会话声明缺省特性(又见 ALTER USER 和 ALTER DATABASE 命令获取基于用户和数据库设置缺省行为的方法。)
请参考 SQL 命令 SET 获取这些环境变量的正确数值。
下面的环境变量决定 libpq 的内部行为; 它们覆盖编译的缺省。