使用 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" 部分中。 该表包含供参考的细目。
字段名称 | 索引 | 描述 |
---|---|---|
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 数据库。 它提供环境变量 PGPASSWORD
和 PGSSLROOTCERT
。 将 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'
使用自签名证书
- 从 端点 面板或连接信息的 Base64 字段复制证书信息。
- 如果需要,将 Base64 字符串解码为文本。
- 将证书保存到文件。 (您可以使用提供的名称或您自己的文件名)。
- 提供
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