본문 바로가기

Develop/AWS

[AWS] RDS MySQL WorkBench 연결 시 unable to connect to localhost 에러 발생

반응형

문제

AWS에서 RDS로 DB를 생성한 뒤, 로컬 환경의 workbench로 연결하고자 했습니다. 그러나 아래와 같이 db에 연결을 실패했습니다. 연결 시도 방법은 u-nij님의 포스트를 참고해서 진행했습니다.

RDS 인스턴스의 퍼블릭 액세스는 허용으로 되어있었고, 오타 문제도 아니었습니다. 그래서 구글링을 한 결과,  hyeonae님의 포스트에서 정답을 얻었습니다.

원인

연결이 되지 않았던 원인은 서브넷이 private으로 설정되어 있었기 때문입니다. 

해결 방법

해결 방법은 간단합니다. 우선, RDS 인스턴스 정보에서 사용하고 있는 서브넷의 정보를 확인합니다. 그 후에 VPC -> 라우팅 테이블 -> 이전에 확인한 서브넷을 가지고 있는 라우팅 테이블 클릭 -> 라우팅 편집 -> 대상을 0.0.0.0/0 및 인터넷 게이트웨이로 설정하여 라우팅 추가 -> 변경 사항 저장

라우팅 추가

분석

이 문제를 겪었던 이유는 AWS의 동작 방법에 대한 충분한 이해가 부족했기 때문입니다. 제가 작성한 다른 포스트인 [AWS] VPC 이해하기에서 VPC와 관련된 개념들을 소개하고 있습니다. 이 포스트를 참고하면 문제에 대한 원인을 분석할 수 있습니다.

 

VPC를 생성하면 자동으로 생성되는 기본 라우팅 테이블은 VPC 내부 통신을 가능하게 하는 로컬 라우팅만을 가지고 있습니다. 저는 기본 VPC에, 기본 Subnet만을 가지고 있고, RDS또한 서브넷을 자동으로 연결하도록 설정해주었습니다. 그렇다보니, RDS 인스턴스는 VPC 내부에서만 통신할 수 있도록 라우팅 되어 있어 연결이 되지 않았던 것입니다. 그래서 위의 해결 방법과 같이, RDS 인스턴스에 연결된 서브넷의 라우팅 테이블에 외부와 통신할 수 있도록 인터넷 게이트웨이의 주소를 추가해줌으로써 제 로컬 환경과 통신할 수 있었습니다.

 

이번에는 RDS가 외부와 통신이 되도록 이미 연결되어 있는 라우팅 테이블에 라우팅을 추가해주었습니다. 이후에는 제 목적에 맞는 VPC와 Subnet을 생성한 후, 각 인스턴스들을 의도에 맞게 Subnet에 연결시켜주는 방식으로 진행하여 이런 에러를 피하고자 합니다.

반응형