使用 psql 工具连接到集群 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 psql 工具连接到集群

创建 Amazon Redshift 集群后,您可以使用 psql(PostgreSQL 中基于终端的前端)来查询集群中的数据。您能以交互方式键入查询,或从文件中读取查询。要通过 psql 进行连接,您必须指定集群终端节点、数据库和端口。

注意

Amazon Redshift 不提供 psql 工具;它随 PostgreSQL 一起安装。有关使用 psql 的信息,请转至 https://www.postgresql.org/docs/8.4/static/app-psql.html。有关安装 PostgreSQL 客户端工具的信息,请访问以下位置的 PostgreSQL 二进制文件下载页面并选择您的操作系统:https://www.postgresql.org/download/

如果由于无效的 client_encoding 而无法从 Microsoft Windows 提示符中进行连接,请在运行 psql 之前将 PGCLIENTENCODING 环境变量设置为 UTF-8。

set PGCLIENTENCODING=UTF8

使用 psql 默认设置进行连接

默认情况下,psql 不会验证 Amazon Redshift 服务,而是使用安全套接字层 (SSL) 建立加密连接。

使用 psql 默认设置进行连接

  1. 登录到Amazon Web Services Management Console,然后打开 Amazon Redshift 控制台https://console.aws.amazon.com/redshift/

  2. 根据您使用的 Amazon Redshift 控制台,选择以下其中一个步骤:

    • (新控制台)在导航窗格中,选择 CLUSTERS (集群)。然后,从列表中选择集群名称以打开其详细信息。在 Properties (属性) 选项卡上的 Database configurations (数据库配置) 部分中,记录 Database name (数据库名称)Port (端口)。查看 Connection details (连接详细信息) 部分,并记录以下形式的 Endpoint (终端节点)

      endpoint:port/databasename
    • (原始控制台)在导航窗格中,选择 Clusters (集群)。选择您的集群以将其打开。在 Cluster Database Properties 下,记录 EndpointPortDatabase Name 的值。

  3. 在命令提示符处,使用命令行参数或连接信息字符串来指定连接信息。使用以下参数:

    psql -h <endpoint> -U <userid> -d <databasename> -p <port>

    其中:

    • <endpoint> 是您在上一步中记录的 Endpoint (终端节点)

    • <userid> 是有权连接到集群的用户 ID。

    • <databasename> 是您在上一步中记录的 Database Name (数据库名称)

    • <port> 是您在上一步中记录的 Port (端口)

    例如:

    psql -h examplecluster.<XXXXXXXXXXXX>.us-west-2.redshift.amazonaws.com -U masteruser -d dev -p 5439
  4. 在 psql 密码提示符处,输入 <userid> 用户的密码。

您现已连接到集群,并能以交互方式输入命令。

使用证书进行连接

要控制 psql 是否要使用证书对服务进行身份验证,您必须使用连接信息字符串指定连接信息,并指定 sslmode 关键字。默认情况下,psql 采用的是 sslmode=prefer。要指定 psql 打开加密连接并使用 Amazon Redshift 证书验证服务,请将 Amazon Redshift 证书下载到您的计算机上。除非您不使用 DNS 别名,请指定 verify-full。如果您使用 DNS 别名,请选择 verify-ca。 指定sslrootcert与证书的位置。有关 sslmode 的更多信息,请参阅 配置连接的安全选项

有关连接信息字符串参数的更多信息,请参阅 https://www.postgresql.org/docs/8.4/static/libpq-connect.html

使用证书进行连接

  1. Redshift 证书颁发机构包 .crt 文件保存并下载到您的计算机中。如果您使用的是 Internet Explorer,要执行文件\另存为操作,请将文件类型指定为文本文件 (*.txt),并删除 .txt 扩展名。例如,将其另存为文件 C:\MyDownloads\redshift-ca-bundle.crt

  2. 根据您使用的 Amazon Redshift 控制台,选择以下其中一个步骤:

    • (新控制台)在导航窗格中,选择 CLUSTERS (集群)。然后,从列表中选择集群名称以打开其详细信息。在 Properties (属性) 选项卡上的 Database configurations (数据库配置) 部分中,记录 Database name (数据库名称)Port (端口)。查看 Connection details (连接详细信息) 部分,并记录以下形式的 Endpoint (终端节点)

      endpoint:port/databasename
    • (原始控制台)在导航窗格中,选择 Clusters (集群)。选择您的集群以将其打开。在 Cluster Database Properties 下,记录 EndpointPortDatabase Name 的值。

  3. 在命令提示符处,使用连接信息字符串指定连接信息:

    psql "host=<endpoint> user=<userid> dbname=<databasename> port=<port> sslmode=verify-ca sslrootcert=<certificate>"

    其中:

    • <endpoint> 是您在上一步中记录的 Endpoint (终端节点)

    • <userid> 是有权连接到集群的用户 ID。

    • <databasename> 是您在上一步中记录的 Database Name (数据库名称)

    • <port> 是您在上一步中记录的 Port (端口)

    • <certificate> 是证书文件的完整路径。在 Windows 系统上,指定证书路径必须使用 Linux 式分隔符“/”而非 Windows 式分隔符“\”。

      在 Linux 和 macOS X 操作系统上,路径为

      ~/.postgresql/root.crt

      在 Microsoft Windows 上,路径为

      %APPDATA%/postgresql/root.crt

    例如:

    psql "host=examplecluster.<XXXXXXXXXXXX>.us-west-2.redshift.amazonaws.com user=masteruser dbname=dev port=5439 sslmode=verify-ca sslrootcert=C:/MyDownloads/redshift-ca-bundle.crt"
  4. 在 psql 密码提示符处,输入 <userid> 用户的密码。

您现已连接到集群,并能以交互方式输入命令。