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) |
您可以将这些值存储在一个文件中,而不是使用上面所示的参数或环境变量。在以下格式中,每个定义使用一行
hostname:port:database:username:password
UNIX 系统上的默认文件名是 ~/.pgpass
,Windows 上则是 C:\Users\MyUser\AppData\Roaming\postgresql\pgpass.conf
。在 UNIX 系统上,文件保护必须禁止任何世界或组访问:chmod 0600 ~/.pgpass
。
您可以使用任何文本编辑器创建该文件。如果您使用 pgAdmin,则无需创建该文件。pgAdmin 会在连接成功后自动创建该文件,并存储实际的连接值。