1

NAT가없는 하나의 서브넷에서 실행되는 RDS 인스턴스와 인터넷 게이트웨이가 구성된 다른 서브넷에서 실행되는 EC2 인스턴스가 모두 동일한 VPC에 있습니다. 공개적으로 액세스 할 수 없도록 RDS 인스턴스를 구성했습니다.NAT없이 다른 서브넷의 EC2에서 RDS에 연결

내 원격 EC2에서 다음 명령을 사용하고있는 RDS 인스턴스에 연결합니다 (두 번째 서브넷에서 실행) :

mysql -h xxxx.eu-central-1.rds.amazonaws.com -P 3306 -u root -p 

나는 RDS를 구성 할 때 내가 설정 한 올바른 암호를 입력, 다음 오류가 발생합니다.

Can't connect to MySQL server on xxxx.eu-central-1.rds.amazonaws.com

내가 뭘 잘못하고 있니? 내가 놓친 게 있니?

답변

3

RDS 서버에 할당 된 보안 그룹에서 포트 3306을 열어야 할 가능성이 큽니다. 특히 포트 3306에서 수신을 허용하는 규칙을 만들고 소스에 대해 EC2 서버에 할당 된 보안 그룹의 ID를 사용합니다.

+0

인바운드 포트 3306이 열려 있습니다. '인바운드'는 서브넷 자체 또는 전체 VPC에만 적용됩니까? – Theodore

+0

무엇에 열어 봤습니까? 모든 트래픽? 그렇다면 전체 VPC에 적용됩니다. 방금 다시 질문을 확인했는데,'root'가 정확한 계정입니까? RDS 인스턴스에서'root' 데이터베이스 계정에 액세스 할 수 없습니다. –

+0

콘솔에서 RDS를 구성 할 때 사용자 이름을 묻는 메시지가 나오면 '루트'를 선택했습니다. 문제는 잘못된 사용자 이름이나 암호 오류를 반환하지 않는다는 것입니다. 몇 분을 기다린 후에 MySQL에서 단순히 '연결할 수 없습니다.'라는 오류가 발생합니다. – Theodore

0

서브넷 및/또는 사용자의 PostgreSQL 인스턴스에 대한 보안 그룹 수신 규칙에 PostgreSQL 용 포트 3306이 열려 있어야합니다. 기본 포트를 변경 한 경우 해당 포트를 대신 사용해야합니다.

EC2 인스턴스는 인터넷을 통해 통신 할 필요가 없으며 보안 그룹에 적절한 포트가 열려 있어야합니다.

EC2 보안 그룹의 모든 송신 데이터를 허용하지 않으면 송신 포트 3306이 EC2 보안 그룹에서 RDS 보안 그룹에 열려 있는지 확인해야합니다.

+0

이들은 내 [acl 구성] (http://i.imgur.com/2NXP4mL.png) 및 [보안 그룹 구성] (http://i.imgur.com/SXkE0ed.png)입니다. 보안 그룹의 포트는 위에서 설명한대로 설정됩니다. 제가 누락 된 것이 있습니까? – Theodore