IBM Cloud Docs
使用 psql 进行连接

使用 psql 进行连接

使用 psql 对数据库中创建的数据结构进行直接交互和监视。psql 对于测试和监视查询和性能,安装和修改脚本以及其他管理活动也很有用。

admin 用户随附了 PostgreSQL 缺省角色 pg_monitor,该角色允许访问 PostgreSQL 监视视图和功能。 缺省情况下,admin 用户对其他用户创建的对象没有许可权。

必须先设置 admin 密码,然后才能将其用于连接到数据库。 有关更多信息,请参阅 设置管理员密码 页面。

安装 psql

要使用 psql,需要在本地系统上安装PostgreSQL客户端工具。 它们可与 postgresql.org提供的完整 PostgreSQL 软件包一起安装,作为操作系统的软件包管理器中的 软件包

有关 psql 的更多信息,请参阅 PostgreSQL 文档

安装 PostgreSQL 工具的大多数指示信息假定您也希望安装数据库。 如果您处理的用户无法访问云或远程服务器上的 PostgreSQL,那么这是合理的假设。

以下是将 psql 作为独立工具安装到 macOS, Linux 和 Windows 的步骤。

使用 Homebrew 在 macOS 上安装 psql

建议使用 Homebrew 作为 macOS的软件包管理器。 通过 Homebrew,您可以安装许多应用程序,通常使用 /usr/local/bin 中提供的程序。 PostgreSQL 客户机工具的 Homebrew 包是 libpq 包。 Brew 使其易于安装:

brew install libpq

但是,有一个小 catch: libpq 不会将自身安装在 /usr/local/bin 目录中。 要实现此目标,您需要运行以下命令:

brew link --force libpq

这将符号链接 (指向另一个文件或文件夹的文件) 所有工具 (而不仅仅是 libpq) 到 /usr/local/bin 目录中。

在Ubuntu上安装 postgresql-client

Linux系统与macOS,不同,内置了软件包管理器。 对于 Ubuntu(和基于 Debian的发行版),这是 apt 命令。 PostgreSQL客户端分布在名称为 postgresql-client 的应用程序中。 要安装它,请运行以下命令

sudo apt-get install postgresql-client

这将安装 PostgreSQL 客户端。

在 Red Hat Enterprise Linux 上安装 postgresql-client

对于 Red Hat Enterprise Linux(或通常所写的 RHEL),需要比 Ubuntu 更多的设置。 对于 RHEL,软件包管理器是 Yum

首先,您需要将 Yum 指向 PostgreSQL 资源库,就像这样:

sudo yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-redhat10-10-2.noarch.rpm

Yum 进入该 URL 并将自己配置为使用该软件包资源库。 这样,您就可以按名称添加软件包了:

sudo yum install postgresql15

该命令只安装客户端软件包。 如果您想知道在哪里可以找到该资源库 URL,请访问 Linux 下载 (Red Hat 系列),在那里您可以找到一个表单,让您选择 PostgreSQL 版本、平台和体系结构,它将为你提供该 Red Hat 变体的相应说明 - 包括 CentOS, Scientific Linux 和 Oracle Enterprise Linux。 它还包括 Fedora。 Fedora 的默认软件源中已经有一个 PostgreSQL 客户端。 因此,对于 Fedora 27 和 28 及更高版本,请使用终端安装 PostgreSQL 客户端:

sudo dnf install postgresql.x86_64

在 Windows 上安装 psql

对于 Windows,请使用 Enterprise DB 的 PostgreSQL安装程序。 它是 Windows 上 PostgreSQL 的完整安装包,但您可以将其设置为只安装命令行工具,如 psql。 选择 PostgreSQL 和 Windows 版本。 下载可执行文件后,运行它。 如果不需要安装服务器,请仅选择 命令行工具

安装完成后,您需要设置 Windows 环境变量,以便在命令提示符下使用 psql 客户端。 转到控制面板>系统和安全>系统并选择高级系统设置。 在这里,你会看到一个名为系统属性的框。 选择环境变量。 出现一个窗口,显示两组环境变量。 在标有“...的用户变量”的顶部集合中,选择 PATH 条目,然后单击 Edit 按钮。 编辑窗口将出现。 单击 New 并添加到 psql 客户端的路径。 您的路径取决于 PostgreSQL 的安装位置,但通常是这样:

C:\Program Files\PostgreSQL\<POSTGRES_VERSION>\bin

然后,单击几次 OK 返回桌面。 启动一个新的命令提示符,然后运行 psql

psql 连接字符串

连接字符串显示在部署的“概述”的“端点”面板中,还可以从 Cloud Databases CLI 插件API 中检索。

psql 建立连接所需的信息位于连接字符串的 "cli" 部分中。 该表包含供参考的细目。

psql/cli 连接信息
字段名称 索引 描述
Bin 用于创建连接的建议二进制文件; 在此情况下为 psql
Composed 用于与部署建立连接的格式化命令。 该命令组合了 Bin 可执行文件,Environment 变量设置,并使用 Arguments 作为命令行参数。
Environment 设置为环境变量的键/值的列表。
Arguments 0... 作为参数传递给 "Bin" 字段中显示的命令的信息。
Certificate Base64 自签名证书,用于确认应用程序连接到相应的服务器。 它是base64编码的。
Certificate 名称 自签名证书的已分配名称。
Type 使用此连接信息的包的类型; 在本例中为 cli
  • 0... 指示数组中可能有一个或多个这些条目。

创建命令行客户机连接

在创建命令行客户机连接之前,请确保您已为部署 设置管理密码

ibmcloud cdb deployment-connections 命令处理创建命令行客户机连接时涉及的所有内容。 例如,要连接到名为 "example-postgres" 的部署,请使用以下命令:

ibmcloud cdb deployment-connections <INSTANCE_NAME_OR_CRN> --start

ibmcloud cdb cxn <INSTANCE_NAME_OR_CRN> -s

该命令将提示输入管理员密码,然后运行 psql 命令行客户机以连接到数据库。

如果尚未安装 Cloud Databases CLI 插件,请使用 psql 为其提供“组合”连接字符串来连接到 PostgreSQL 数据库。 它提供环境变量 PGPASSWORDPGSSLROOTCERT。 将 PGPASSWORD 设置为管理员的密码,并将 PGSSLROOTCERT 设置为自签名证书的路径或文件名。

PGPASSWORD=$PASSWORD PGSSLROOTCERT=0b22f14b-7ba2-11e8-b8e9-568642342d40 psql 'host=4a8148fa-3806-4f9c-b3fc-6467f11b13bd.8f7bfd7f3faa4218aec56e069eb46187.databases.appdomain.cloud port=32325 dbname=ibmclouddb user=admin sslmode=verify-full'

使用自签名证书

  1. 端点 面板或连接信息的 Base64 字段复制证书信息。
  2. 如果需要,将 Base64 字符串解码为文本。
  3. 将证书保存到文件。 (您可以使用提供的名称或您自己的文件名)。
  4. 提供 ROOTCERT 环境变量的证书路径。

您可以使用以下命令通过 CLI 插件显示部署的解码证书:

ibmcloud cdb deployment-cacert <INSTANCE_NAME_OR_CRN>

该命令将 base64 解码为文本。 复制命令的输出并将其保存到文件中,然后提供该文件的 ROOTCERT 环境变量路径。

另一个选项是将 &sslrootcert=/path/to/cert 添加到连接字符串,例如:

postgres://$USERNAME:$PASSWORD@6eb96148-90bc-49a0-a5a4-dc2b53334653.btdl8mld0r95fevivv30.databases.appdomain.cloud:32109/ibmclouddb?sslmode=verify-full&sslrootcert=/path/to/cert