AWS:无法从我的计算机连接到RDS数据库

时间:2016-05-13 14:41:08

标签: mysql django database amazon-web-services amazon-rds

EC2实例/实时网络可以很好地连接到RDS数据库。但是当我想调试本地机器中的代码时,我无法连接到数据库并出现此错误:

  

OperationalError:(2003,“无法连接到'aa9jliuygesv4w.c03i1上的MySQL服务器   ck3o0us.us-east-1.rds.amazonaws.com'(10060)“)

我已将.pem.ppk个密钥添加到.ssh,我已配置EB CLI。我不知道该怎么办。

仅供参考:该应用程序位于Django

9 个答案:

答案 0 :(得分:65)

事实证明并不难。执行以下步骤:

  1. 转到EC2信息中心
  2. 转到“安全组”标签
  3. 选择并仅选择RDS数据库安全组。您将在底部看到安全组详细信息
  4. 点击“入站”标签
  5. 点击修改按钮
  6. 添加类型:MYSQL / Aurora;协议:TCP;范围:3306;来源:0.0.0.0/0
  7. Steps

答案 1 :(得分:32)

确保将import 'zone.js/dist/webapis-media-query' interface BreakpointQuery { query: string, breakpoint: ScreenSize } export enum ScreenSize { Small, Medium, Large } const SMALL = 640 const MEDIUM = 1024 const queries: BreakpointQuery[] = [ { query: `(max-width: ${SMALL}px)`, breakpoint: ScreenSize.Small }, { query: `(min-width: ${SMALL + 1}px) and (max-width: ${MEDIUM}px)`, breakpoint: ScreenSize.Medium }, { query: `(min-width: ${MEDIUM + 1}px)`, breakpoint: ScreenSize.Large } ] @Injectable({ providedIn: 'root' }) export class ScreenSizeService { size: Observable<ScreenSize> private subject: BehaviorSubject<ScreenSize> constructor ( private readonly windowRefService: WindowRefService ) { this.setupSizeObservable() this.setupMediaQueries() } private setupSizeObservable (): void { this.subject = new BehaviorSubject<ScreenSize>(this.currentSize()) this.size = this.subject.asObservable() } private setupMediaQueries (): void { queries.forEach(breakpointQuery => { // @see False deprecation of addListener https://github.com/microsoft/TypeScript/issues/32210 this.windowRefService.matchMedia(breakpointQuery.query) .addListener(this.mediaChange(breakpointQuery.breakpoint)) }) } private mediaChange (size: ScreenSize): MediaQueryListListener { return (event: any) => { if (event.matches) { this.subject.next(size) } } } private currentSize (): ScreenSize { const current = queries.find(breakpointQuery => { return this.windowRefService.matchMedia(breakpointQuery.query).matches }) return current!.breakpoint } } 设置为是

这就是我最近三天试图解决的问题...

答案 2 :(得分:6)

接受来自任何 IP 地址的流量

创建 RDS 实例后,我的安全组入站规则设置为特定 IP 地址。我必须编辑入站规则以允许从任何 IP 地址进行访问。

  • “安全组规则”
  • 选择一个安全组
  • 点击“入站规则”
  • 点击“编辑入站规则”
  • 在“来源”下选择下拉菜单并点击“任何地方”
  • ::0 或 0.0.0.0/0 应该出现。
  • 点击“保存规则”

答案 3 :(得分:2)

仅花费了两个小时来浏览此页面上的出色解决方案。时间到了愚蠢的答案!

我重做了我的安全组,VPC,路由表,子网,网关... NOPE。我从AWS控制台复制粘贴了URL,在某些情况下会导致隐藏的尾随空格。端点位于<div>元素中,浏览器在复制时会给出\n。将其粘贴到Intellij db连接器中会将其强制到一个空格。

我只是在将URL粘贴到源代码中的引号字符串后才注意到问题。

hidden space

hidden space in IDE

答案 4 :(得分:0)

确保您的VPC和子网足够宽。

以下CIDR配置非常适合两个子网:

  • VPC 10.0.0.0/16 10.0.0.0 — 10.0.255.255 (65536 addresses)

  • 子网1 10.0.0.0/17 10.0.0.0 — 10.0.127.255 (32768 addresses, half)

  • 子网2 10.0.128.0/17 10.0.128.0 — 10.0.255.255 (32768 addresses, other half)

如果需要三个子网,请进行调整。


我无法连接到我的RDS数据库。我已经手动检查了所有细节,一切都很好。没有任何问题的征兆,我在文档中找不到任何合适的信息。我的VPC配置了窄CIDR:10.0.0.0/22,每个子网有255个地址。将CIDR更改为10.0.0.0/16并将其完全拆分到两个子网之后,我的RDS连接开始工作。设法找到问题的根源纯属幸运,因为这对我来说没有任何意义。

答案 5 :(得分:0)

就我而言,当我升级尺寸时。 rds实例的专用地址属于VPC的专用子网。您可以使用the article 我的实例位于私有子网中,无法从本地计算机连接到该实例,无法找到您的数据库实例地址。

但是,更改路由表并不能解决我的问题。我最终解决的问题是降级尺寸,然后再将尺寸升级回来。一旦私有地址退回到公共子网。一切都像魅力一样。

答案 6 :(得分:0)

几乎每个人都指出了答案,我将以不同的角度提出答案,以便您理解。

有两种方法可以连接到您的AWS RDS

  1. 您在同一VPC和子网中置备实例。安装工作台后,您将能够连接到数据库。您无需将其公开访问。示例:您可以在同一VPC组中设置Windows实例并安装工作台,并且可以通过端点连接到数据库。

  2. 另一种方法是使Db公开访问您的IP,只是为了防止不必要的访问。您可以更改数据库安全组,以仅允许数据库端口流量访问您的IP。这样,您的数据库将可以公开访问,但仅限您自己。这是我们为各种AWS服务所做的方式,我们在SG的源部分中添加了安全组。

如果这两个选项均不起作用,则错误在VPC路由表中,您可以在那里检查它是否与子网相关联,以及是否连接了Internet网关。

您可以观看此视频,这将消除您的疑虑:

https://youtu.be/e18NqiWeCHw

答案 7 :(得分:0)

即使从ec2实例内部,我也无法连接。

挖掘AWS RDS选项后,发现ec2实例只能连接到它们所在的同一VPC中的RDS。

在与RDS相同的VPC中创建ec2实例时,可以按预期访问它。

答案 8 :(得分:0)

不要忘记检查您的 VPN 或防火墙是否阻止连接。