【问题标题】:How do I connect with my redshift database?如何连接我的 redshift 数据库?
【发布时间】:2018-11-05 18:37:57
【问题描述】:

我正在 AWS 上设置一个 redshift 数据库,我已按照本文中的说明进行操作 - https://chartio.com/resources/tutorials/connecting-to-a-database-within-an-amazon-vpc/

我无法连接到数据库。

这是我的设置 -

我有一个使用 Amazon RDS 开发的 PostgreSQL 数据库实例。它连接到具有两个子网的 Amazon VPC。

子网 A 在 us-east-2c 中设置。它与具有两条路由的路由表相关联。第一个有目的地 10.0.0.0/16,目标“本地”,状态“活动”和传播“否”。第二个具有目标 0.0.0.0/0 并以与 VPC 关联的 Internet 网关为目标。

子网 B 在 us-east-2b 中设置。它的目的地为 10.0.0.0/16,目标为“本地”。

PostgreSQL 数据库与具有以下入站规则的安全组相关联:类型:自定义 TCP 规则,协议:TCP,端口范围:5432 和源:10.0.0.0/32。没有出站规则。

关于数据库的其他详细信息:

-Publicly Accessible 设置为否

-它在 us-east-2b 中运行

另外,EC2 上有一个实例。它在 us-east-2c 上。

它与具有以下入站规则的安全组相关联:

First- 类型:自定义 TCP 规则,协议:TCP,端口范围:5432,来源:10.0.0.0/32

第二-类型:SSH,协议:TCP,端口范围:22,来源:(my-ip-address)/32

第三种类型:SSH,协议:TCP,端口范围:22,来源:(安全组的组 ID)

两个安全组都与具有以下设置的同一个 VPC 关联:IPv4 CIDR:10.0.0.0/16,IPv6 CIDR:(空白)。

我对设置的理解是 EC2 实例是公共的,我可以从我的 SQL 客户端 (Postico) SSH 到该实例。然后,EC2 实例将私下连接到 Redshift 数据库。

这是我的问题-

a) 我以前从未设置过这个,而且我可能在不知不觉中做了一些完全错误的事情。

b) 我正在尝试从 Postico 创建 SSH 连接。我不知道为“主机”或“端口”填写什么值。此外,我不知道“用户”和“密码”是指我计算机上帐户的用户名和密码,还是完全指其他东西。

我的目标只是能够拥有一个对公众不可用的 PostgreSQL 数据库,但允许我从我的 SQL 客户端 (Postico) 访问它。

我曾尝试研究此问题,但令人惊讶的是,我无法找到满足这些需求的内容。我是新手,所以如果我缺少发布此内容所需的部分,或者我以某种方式搞砸了,请提醒我,我会相应地更新。

【问题讨论】:

  • 您的 Postico 客户在哪里?是在 EC2 上,还是在外面,在 Internet 上?您的 Redshift 数据库是在公共子网还是私有子网中?

标签: amazon-web-services connection amazon-redshift amazon-vpc aws-security-group


【解决方案1】:

您的入站安全组有“来源:10.0.0.0/32”这意味着只有 10.0.0.0 可以连接到它,这是一个无效的主机地址。更改 /32 以匹配您的网络 (/16)。

Redshift 的端口通常是 5439。你引用的是 5432。

我不明白你的“b”问题。你想连接什么?

[更新新信息]

我刚刚意识到你正在尝试做的事情有问题。

您的目标是使用 SSH 从您的桌面连接到 EC2,然后连接到 RDS。这行不通。

解决方案是设置一个 VPN,例如 OpenVPN,它允许您连接到 AWS 中的 VPC,然后 OpenVPN 会将您的客户端请求转发到 RDS(VPN 路由)。

我所做的是使用 OpenVPN 设置 EC2 实例。然后,当我需要通过 VPN 访问 AWS 时,我会打开和关闭此实例。我有可以从我的桌面执行此操作的批处理脚本(启动和停止 EC2 实例)。

另一种选择是允许 Internet 访问 RDS。您可以使用安全组将 Internet 访问锁定为仅限您的家庭/工作 IP 地址。根据您的 Internet 提供商,您的 IP 可能会发生变化,这意味着使用新 IP 地址更新您的安全组,但这很简单。

此页面将显示您放入安全组的公共 IP 地址:What is my IP

【讨论】:

  • 谢谢!我将把“/32”改成“/16”
  • 对于 B - 我想通过我的 sql 客户端 (postico) 连接到 redshift。它需要主机、端口、用户、通行证和数据库。当我只使用这些时,我会收到一条超时消息。所以,我正在尝试 SSH 进入数据库,但我不知道 SSH 主机、SSH 端口和 SSH 用户和密码该放什么。
  • Redshift 不支持通过 SSH 连接。您需要使用 SQL 客户端。一旦您的安全组正确,mysql 客户端问题就会消失。
  • 我尝试了“Source: 10.0.0.0/16”并且收到了相同的超时消息。当我说 redshift 时,我说错了,它是在 Amazon RDS 上启动的 PostgreSQL 数据库。这或许可以解释端口差异。
  • 你指定什么参数来连接? RDS 使用 DNS 名称。
猜你喜欢
  • 2022-11-09
  • 2021-09-02
  • 2013-11-19
  • 1970-01-01
  • 2021-02-08
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
  • 2015-10-02
相关资源
最近更新 更多