Amazon RDS를 설정 한 후 왜 연결할 수 없습니까?


43

방금 Amazon RDS 계정을 만들었습니다. 그리고 데이터베이스 인스턴스를 시작했습니다.

The "endpoint" is:
abcw3n-prod.cbmbuiv8aakk.us-east-1.rds.amazonaws.com

큰! 이제 다른 EC2 인스턴스 중 하나에서 연결하려고합니다.

mysql -uUSER -pPASS -habcw3n-prod.cbmbuiv8aakk.us-east-1.rds.amazonaws.com

그러나 아무것도 작동하지 않고 중단됩니다.

나는 그것을 핑하려고했지만 아무것도 작동하지 않는다. 아무 반응이 없습니다.

일부 설정을 변경해야합니까?

답변:


45

기본적으로 RDS는 보안 그룹 (SG) 내에 지정되지 않은 연결을 허용하지 않습니다. CIDR 주소 지정 또는 해당 계정의 EC2가 액세스 할 수있는 Amazon 계정 번호를 기준으로 허용 할 수 있습니다.


27

다른 인스턴스에서 mySQL 연결을 수락하도록 방화벽을 구성하지 않았기 때문에 "정지 된 상태"입니다. 이러한 수준의 패킷이 방화벽 수준에서 삭제되므로이를 해결하기 위해 다음을 수행해야합니다.

  1. AWS 콘솔로 향하십시오
  2. EC2 탭
  3. mySQL 서버의 보안 그룹을 기록해 두십시오 (지금은이 SG-MYSQL을 호출하십시오).
  4. 콘솔 왼쪽에서 보안 그룹을 클릭하십시오.
  5. 중앙 메뉴 SG-MYSQL에서 그룹을 클릭하십시오
  6. 인바운드 탭을 클릭하십시오.
  7. 목록에서 mySQL을 선택하고 클라이언트 서버의 세부 사항을 추가 한 후 규칙을 저장하십시오.

참고 서버의 소스 IP는 탄력적 IP가 아니며 (대부분의 경우) 장치에 내부 IP가 있습니다 (linux의 ifconfig가 이것을 보여줍니다).


1
EC2 서버에서이 작업을 수행했습니다. 모든 표준 포트를 열었습니다.
Alex

1
EC2 인스턴스가 없으며이 작업을 수행 할 때까지 RDS를 외부 세계에 연결할 수 없습니다.
Umair A.

1
신축성이 뛰어난 IP 사용 포인트!
user1641443

1
고마워 연습은 모든 차이를 만들었습니다!
Mr T

1
이것을 막기 위해 서버 오류시 계정을 만들었습니다. 감사합니다.
CaptainMarvel

7

보안 그룹에 대한 많은 이야기가 있지만 확인하십시오.

  • 연결된 서브넷이 올바르게 구성되어 있습니까?
  • 서브넷이 올바르게 구성된 것처럼 보이는 라우팅 그룹의 일부입니까 (인터넷 게이트웨이 지정 등)?
  • RDS에 공개적으로 액세스 할 수 있다고 표시됩니까?
  • 물론 RDS 보안 그룹 및 EC2 보안 그룹을 확인하십시오.
    • 실제 소스 IP는 내부 IP (VPC를 통해 내부적으로 액세스하는 경우) 또는 외부 IP (라우터의 IP 또는로드 밸런서 / Elastic IP와 다른 EC2 인스턴스의 인스턴스 IP 일 수 있음)임을 잊지 마십시오. -문제를 해결하기 위해 모든 IP 및 포트에 대한 액세스를 허용하려고 할 수 있습니다.

(라우팅 그룹이 문제였습니다. 새 서브넷을 만들 때 게이트웨이가있는 라우팅 그룹에 추가하지 않았습니다.)


확인하려면 : RDS 서브넷 그룹에서 선택한 모든 서브넷에는 인터넷 게이트웨이가 지정된 라우팅 테이블이 있어야합니다. 내 문제는 내가 선택한 "서브넷"서브넷 중 두 개가 인터넷 게이트웨이가 아닌 아웃 바운드 트래픽에 NAT 게이트웨이를 지정하고 RDS가 해당 서브넷 중 하나에서 서버를 선택한다는 것입니다. 라우팅에 익숙하지 않은 경우이 기사를 참조하십시오. medium.com/@mda590/aws-routing-101-67879d23014d
timetofly

@timetofly와 같은 문제의 영향을 받았습니다. ECS Fargate에서 실행하기로 결정한 일회성 작업이 있었는데 파일을 다운로드하려면 NAT가 필요했습니다. NAT를 설정하면 랩톱에서 RDS에 대한 연결이 끊어졌습니다. 작업이 끝나면 인터넷 게이트웨이 만 사용하도록 서브넷을 업데이트했으며 계속 진행했습니다.
vitale232

4

결정된.

DB 아래의 보안 그룹에서 액세스 권한을 부여해야했습니다 ...


6
액세스 권한을 부여하기 위해 수행 한 작업을 자세히 설명 할 수 있습니까?
David Csonka 2016 년

1
내 데이터베이스에는 규칙이 하나 인 보안 그룹이 있습니다. ANYWHERE에서 포트 1433으로의 액세스를 허용합니다. 연결할 수 없습니다. -_-
The Muffin Man

1

나는 같은 문제가 있었다;

  1. 보안 그룹> rds-launch-wizard (또는 db SG에 선택된 이름)
  2. 인바운드 탭을 선택하고 편집
  3. 새로운 역할을 추가
  4. MySQL
  5. 소스-> AWS VM IP 삽입 (예 : 12.3.14.80/32)

나를 위해 일했다 ...


1

액세스를 잠그기 전에 테스트를 위해 보안을 완전히 개방하기 위해 데이터베이스 인스턴스와 EC2 인스턴스 모두 동일한 보안 그룹을 사용했으며 인바운드 및 아웃 바운드 포트 3306은 모두 어디서나 연결할 수 있도록 구성되었습니다. 문제는-EC2 인스턴스가 어디에나 없었던 것처럼 노트북에서 Aurora에 연결할 수 있었지만 EC2 인스턴스에서는 충분하지 않습니다. 해결책은 다른 인바운드 mysql / Aurora 규칙을 추가 하고 인바운드 연결의 소스 와 동일한 보안 그룹 ID 를 지정하는 것 입니다. 보안 그룹에 자체 규칙이 있으며 노트북 또는 EC2 인스턴스에서 연결할 수 있습니다.


-3

mysql 인바운드 규칙은 다음과 같아야합니다

영상 이것이 보안 그룹의 문제입니다.


3
5 년 전의 질문에 몇 년 동안 있었던 것과 같은 대답으로 대답 할 이유가 있습니까? 0.0.0.0/0액세스 권한을 부여 3306하는 것도 좋은 생각이 아닙니다.
ceejayoz

나는 사용자에게 그들이 무엇을 바꿔야하고 어떻게 바꿀 수 있는지 보여 주려고 노력했다. 도움이되지 않을 수도 있지만 이것을 찾는 사용자가 있습니다. 도움이되지 않기 때문에 다운 투표를했습니다.
Nirmal Dhara

3
필자의 의견은 사람들이 MySQL을 인터넷 전체에 공개해야한다는 말에서 비롯됩니다. 위험한 접근법입니다.
ceejayoz

알았어 보안 그룹을 편집 할 수있는 위치 만 표시하고 원하는대로 드롭 다운에서 선택할 수 있습니다.
Nirmal Dhara
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.