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

使用 Amazon Redshift RSQL 连接到集群

在没有 DSN 的情况下连接

  1. 在 Amazon Redshift 控制台上,选择要连接到的集群,然后记下终端节点、数据库和端口。

  2. 在命令提示符下,使用命令行参数指定连接信息。

    rsql -h <endpoint> -U <username> -d <databasename> -p <port>

    在这里,以下内容适用:

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

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

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

    • <port> 是您在上一步中记录的 Port(端口)。<port> 是一个可选参数,默认值为 5439。

    以下为示例。

    rsql -h testcluster.example.amazonaws.com -U user1 -d dev -p 5439
  3. 在密码提示符处,输入 <username> 用户的密码。

    成功的连接响应如下所示。

    % rsql -h testcluster.example.com -d dev -U user1 -p 5349 Password for user user1: DSN-less Connected DBMS Name: Amazon Redshift Driver Name: Amazon Redshift ODBC Driver Driver Version: 1.4.27.1000 Rsql Version: 1.0.1 Redshift Version: 1.0.29306 Type "help" for help. (testcluster) user1@dev=#

要连接的命令在 Linux、Mac OS 和 Windows 上具有相同的参数。

使用 DSN 进行连接

您可以使用数据源名称(DSN)将 RSQL 连接到 Amazon Redshift,以简化连接属性的组织。有关更多信息,请参阅配置连接功能。本主题包括 ODBC 驱动程序安装说明以及 DSN 属性的说明。

使用带密码的 DSN 连接

下面显示使用密码的 DSN 连接配置的示例。对于 Mac OSX 而言,默认 <path to driver>/opt/amazon/redshift/lib/libamazonredshiftodbc.dylib,对于 Linux 而言,则为 /opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so

[testuser] Driver=/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so SSLMode=verify-ca Min_TLS=1.2 boolsaschar=0 Host=<server endpoint> Port=<database port> Database=<dbname> UID=<username> PWD=<password> sslmode=prefer

连接成功后,输出结果如下。

% rsql -D testuser DSN Connected DBMS Name: Amazon Redshift Driver Name: Amazon Redshift ODBC Driver Driver Version: 1.4.27.1000 Rsql Version: 1.0.1 Redshift Version: 1.0.29306 Type "help" for help. (testcluster) user1@dev=#

使用单点登录 DSN

您可以配置 DSN 以进行单点登录(SSO)身份验证。下面显示使用 Okta SSO 的 DSN 连接配置的示例。

[testokta] Driver=<path to driver> SSLMode=verify-ca Min_TLS=1.2 boolsaschar=0 Host=<server endpoint> clusterid=<cluster id> region=<region name> Database=<dbname> locale=en-US iam=1 plugin_name=<plugin name> uid=<okta username> pwd=<okta password> idp_host=<idp endpoint> app_id=<app id> app_name=<app name> preferred_role=<role arn>

成功连接的输出示例。

% rsql -D testokta DSN Connected DBMS Name: Amazon Redshift Driver Name: Amazon Redshift ODBC Driver Driver Version: 1.4.27.1000 Rsql Version: 1.0.1 Redshift Version: 1.0.29306 Type "help" for help. (testcluster) user1@dev=#

下面显示使用 Azure SSO 的 DSN 连接配置的示例。

[testazure] Driver=<path to driver> SSLMode=verify-ca Min_TLS=1.2 boolsaschar=0 Host=<server endpoint> Port=<cluster port> clusterid=<cluster id> region=<region name> Database=<dbname> locale=en-us iam=1 plugin_name=<plugin name> uid=<azure username> pwd=<azure password> idp_tenant=<Azure idp tenant uuid> client_id=<Azure idp client uuid> client_secret=<Azure idp client secret>

将 DSN 连接与 IAM 配置文件结合使用

您可以使用配置的 IAM 配置文件连接到 Amazon Redshift。IAM 配置文件必须具有调用 GetClusterCredentials 的权限。以下示例演示了要使用的 DSN 属性。仅当 Host 不是 Amazon 提供的端点(如 examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com)时,才需要 ClusterIDRegion 参数。

[testiam] Driver=Default Host=testcluster.example.com Database=dev DbUser=testuser ClusterID=rsqltestcluster Region=us-east-1 IAM=1 Profile=default

Profile 密钥的值是您从 Amazon CLI 凭证中选择的命名配置文件。此示例显示名为 default 的配置文件的凭证。

$ cat .aws/credentials [default] aws_access_key_id = ASIAIOSFODNN7EXAMPLE aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

下面显示的是连接响应。

$ rsql -D testiam DSN Connected DBMS Name: Amazon Redshift Driver Name: Amazon Redshift ODBC Driver Driver Version: 1.4.27.1000 Rsql Version: 1.0.1 Redshift Version: 1.0.29306 Type "help" for help. (testcluster) testuser@dev=>

将 DSN 连接与实例配置文件结合使用

您可以使用 Amazon EC2 实例配置文件连接到 Amazon Redshift。实例配置文件必须具有调用 GetClusterCredentials 的权限。有关要使用的 DSN 属性,请参阅下面的示例。仅当 Host 不是 Amazon 提供的端点(如 examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com)时,才需要 ClusterIDRegion 参数。

[testinstanceprofile] Driver=Default Host=testcluster.example.com Database=dev DbUser=testuser ClusterID=rsqltestcluster Region=us-east-1 IAM=1 Instanceprofile=1

下面显示的是连接响应。

$ rsql -D testinstanceprofile DSN Connected DBMS Name: Amazon Redshift Driver Name: Amazon Redshift ODBC Driver Driver Version: 1.4.27.1000 Rsql Version: 1.0.1 Redshift Version: 1.0.29306 Type "help" for help. (testcluster) testuser@dev=>