跳转至内容

PostgreSQL/客户端服务器通信客户端

来自维基教科书,开放世界中的开放书籍

在像 createdb、psql、pg_dump、vacuumdb 等客户端程序能够对数据库执行任何操作之前,它必须与该数据库建立连接。为此,它必须为基本边界条件提供具体的值。

  • 服务器的 IP 地址或 DNS 名称,即实例运行的位置。
  • 该服务器上的端口,实例正在监听的端口。(IP 地址和端口的组合标识了实例。只要端口不同,同一个 IP 地址上就可以有多个实例。)
  • 实例(或集群内)中的数据库名称。
  • 客户端程序想要使用的用户(= 角色)的名称。
  • 该用户的密码。

您可以通过三种不同的方式指定这些值

  • 作为客户端程序的显式参数。
  • 作为环境变量。
  • 作为特殊文件 pgpass 中的一行固定文本。

您可以在 createdb、psql、pg_dump、vacuumdb 和其他标准 PostgreSQL 命令行工具的常用简短 (-) 或长 (--) 格式中指定参数。

$ # Example
$ psql -h www.dbserver.com --port=5432   ....

参数名称及其含义为

简短形式 长形式 含义
-h --host IP 或 DNS
-p --port 端口号(默认:5432)
-d --dbname 集群中的数据库
-U --username 用户名

如有必要,客户端程序将提示输入密码。

环境变量

[编辑 | 编辑源代码]

作为参数传递的替代方法,您可以在 shell 中定义环境变量。

环境变量 含义
PGHOST IP 或 DNS
PGPORT 端口号(默认:5432
PGDATABASE 集群中的数据库
PGUSER 用户名
PGPASSWORD 该用户的密码(不推荐)
PGPASSFILE 存储这些值的纯文本文件名称,请参见下文(默认:.pgpass)

文件 'pgpass'

[编辑 | 编辑源代码]

您可以将这些值存储在一个文件中,而不是使用上面所示的参数或环境变量。在以下格式中,每个定义使用一行

 hostname:port:database:username:password

UNIX 系统上的默认文件名是 ~/.pgpass,Windows 上则是 C:\Users\MyUser\AppData\Roaming\postgresql\pgpass.conf。在 UNIX 系统上,文件保护必须禁止任何世界或组访问:chmod 0600 ~/.pgpass

您可以使用任何文本编辑器创建该文件。如果您使用 pgAdmin,则无需创建该文件。pgAdmin 会在连接成功后自动创建该文件,并存储实际的连接值。


华夏公益教科书