EC2实例/实时网络可以很好地连接到RDS数据库。但是当我想调试本地机器中的代码时,我无法连接到数据库并出现此错误:
OperationalError:(2003,“无法连接到'aa9jliuygesv4w.c03i1上的MySQL服务器 ck3o0us.us-east-1.rds.amazonaws.com'(10060)“)
我已将.pem
和.ppk
个密钥添加到.ssh
,我已配置EB CLI。我不知道该怎么办。
仅供参考:该应用程序位于Django
答案 0 :(得分:65)
事实证明并不难。执行以下步骤:
答案 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 地址进行访问。
答案 3 :(得分:2)
仅花费了两个小时来浏览此页面上的出色解决方案。时间到了愚蠢的答案!
我重做了我的安全组,VPC,路由表,子网,网关... NOPE。我从AWS控制台复制粘贴了URL,在某些情况下会导致隐藏的尾随空格。端点位于<div>
元素中,浏览器在复制时会给出\n
。将其粘贴到Intellij db连接器中会将其强制到一个空格。
我只是在将URL粘贴到源代码中的引号字符串后才注意到问题。
答案 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
您在同一VPC和子网中置备实例。安装工作台后,您将能够连接到数据库。您无需将其公开访问。示例:您可以在同一VPC组中设置Windows实例并安装工作台,并且可以通过端点连接到数据库。
另一种方法是使Db公开访问您的IP,只是为了防止不必要的访问。您可以更改数据库安全组,以仅允许数据库端口流量访问您的IP。这样,您的数据库将可以公开访问,但仅限您自己。这是我们为各种AWS服务所做的方式,我们在SG的源部分中添加了安全组。
如果这两个选项均不起作用,则错误在VPC路由表中,您可以在那里检查它是否与子网相关联,以及是否连接了Internet网关。
您可以观看此视频,这将消除您的疑虑:
答案 7 :(得分:0)
即使从ec2实例内部,我也无法连接。
挖掘AWS RDS选项后,发现ec2实例只能连接到它们所在的同一VPC中的RDS。
在与RDS相同的VPC中创建ec2实例时,可以按预期访问它。
答案 8 :(得分:0)
不要忘记检查您的 VPN 或防火墙是否阻止连接。