방금 AWS EC2 Ubuntu 인스턴스와 동반 RDS mariadb 인스턴스를 생성했습니다. (저는 현재 무료 등급을 사용하고 있습니다.)
동일한 VCS 내에서만 액세스할 수 있도록 RDS에 대한 공개 액세스를 해제했습니다. 내 EC2 상자는 VCS와 같은 위치에 있으며 거기에서 데이터베이스에 연결하고 싶습니다.
Ubuntu 컴퓨터에 mariadb-client를 설치했습니다. RDS 인스턴스 페이지의 엔드포인트를 RDS 상자로 사용하고 다음 명령을 실행했습니다.
mysql -P 3306 -u thomas -p -h ******.******.us-east-1.rds.amazonaws.com
ERROR 2005 (HY000): Unknown MySQL server host '******.*****.us-east-1.rds.amazonaws.com' (-2)
호스트 *****.********.us-east-1.rds.amazonaws.com이 찾을 수 없음을 반환했습니다.
처음 시도했을 때 서버 이름을 잘못 입력했을 때 오류 뒤에 (-3)이 표시되는 것을 보고 재미있다고 생각했습니다. 그래서 구글에서 오류코드를 찾아보니 이런 내용이 있었습니다.https://dev.mysql.com/doc/refman/5.5/en/error-messages-client.html오류 코드 2005에 대해 알려주지만 괄호 안의 부분은 알려주지 않습니다.
문서에서 포함을 참조하고 있는데 확인했지만 -2를 찾을 수 없습니다. 그래서:
1) 괄호 안의 정보는 어디서 확인할 수 있나요?
2) RDS 인스턴스에 액세스할 수 없는 이유는 무엇입니까?
답변1
뭐, 예상대로 난 바보야. 첫째, 나는 이것을 깨닫지 못했지만 어떤 이유로 끝점이 변경되었습니다. 아마도 설정을 변경한 후 묻지 않고 다시 빌드하고 새 엔드포인트 이름을 부여했을 것입니다. 이것이 nslookup 및 호스트 명령이 실패하는 이유입니다.
그런 다음 작업이 시작되자 연결에 사용했던 스크립트 작업을 시작했고 -h 매개변수의 호스트 이름 끝에 :3306을 남겼다는 것을 깨달았습니다. 나는 이것을 제거하고 모든 것이 작동하기 시작했습니다.
웹 개발자의 로보토미에 "아니오"라고 투표하면 이런 일이 발생합니다.
답변2
호스트 이름 대신 RDS 인스턴스의 IP 주소를 사용하는 것이 좋습니다. 클라이언트 패키지 없이 포트에 직접 액세스할 수 있는지 확인하세요. 호스트 3306에 원격으로 로그인합니다.
또한 VPC에 있으므로 서브넷이 일치하는지 확인하세요. 이를 통해 이전에는 여러 내부 서브넷을 가질 수 있었습니다.