Elastic Beanstalk 앱에 DB연결하기 (MySql Workbench 연동)

방충림·2023년 5월 7일
4

AWS

목록 보기
7/10
post-thumbnail

1. 데이터베이스 정보 확인

데이터베이스라는 것은 사실 앞서 앱과 환경을 만드는 과정에서 이미 생성되었다.

환경 - 구성 탭을 들어가보면 다음과 같이 생성된 데이터베이스의 정보를 확인할 수 있다. (AWS의 서비스 중에 하나인 RDS(Relational Database Service)에 들어가도 똑같이 볼 수가 있다.)

이 정보들을 바탕으로 MySql Workbench 에서 해당 데이터베이스에 접근할 수 있다.

조금 더 자세하게 보기위해 편집버튼을 눌러보자.
데이터베이스의 엔드포인트를 포함한 조금 더 자세한 정보가 있는 것을 볼 수 있다.

여기서 MySql Workbench 연동에 필요한 정보는 다음과 같다.
엔드포인트, 사용자 이름, 암호

암호는 현재 입력되어 있지 않으므로, 사용할 암호를 입력하고 적용버튼을 한번 눌러주자.

2.MySql Workbench에 해당 정보 입력

MySql Workbench의 setup New Connection에서 해당 정보들을 입력한다.

입력이 완료되었으면 Test Connect 버튼을 클릭해본다.
이때, 아래와 같은 오류가 발생할 것이다.


왜 이런 문제가 발생하는 걸까?

3. Workbench 연결 오류 핸들링

하단에 첨부된 유튜브 영상을 통해 이 문제를 해결할 수 있었다. 절차는 다음과 같다.

1) AWS의 RDS 서비스로 이동 - 데이터베이스 - 해당 DB식별자 클릭

2) VPC 보안 그룹에 있는 링크를 클릭

3) 하단의 안바운드 규칙 - 인바운드 규칙 편집 클릭

4) 기존 규칙 삭제 - 규칙 추가(유형:모든 트래픽 - 소스:Anywhere-IPv4)
*참고한 영상에서 모든 트래팩을 열어주라고 했지만, 보안상으로 불안하다. 필요한 IP만 열어주는 것이 좋을 듯 하다.

5) 워크벤치 재연결 시도

데이터베이스의 이름이 ebdb인 것을 눈여겨보자. 환경변수에 사용해야한다.

도움을 받았으면 감사 인사를 잊지 않기로하자. 틈새 영어공부

4. 프로젝트와 연결하기

// connectDB.js 파일
require("dotenv").config();
const mysql = require("mysql");
const connectDB = {
  init: () => {
    return mysql.createConnection({
      host: process.env.DB_HOST,
      user: process.env.DB_USER,
      password: process.env.DB_PASSWORD,
      database: process.env.DB_DATABASE,
    });
  },
  open: (con) => {
    con.connect((err) => {
      if (err) {
        console.log("mysql 연결 실패", err);
      } else {
        console.log("mysql 연결성공");
      }
    });
  },
  close: (con) => {
    con.end((err) => {
      if (err) {
        console.log("mysql 종료 실패", err);
      } else {
        console.log("mysql 종료!");
      }
    });
  },
};

module.exports = connectDB;
// .env 파일
DB_HOST = awseb-e-kqzwz4dp5c-stack-awsebrdsdatabase-wxp3jmyrhn0j.chfhlbalb5jj.us-east-1.rds.amazonaws.com
DB_USER = test
DB_PASSWORD = 비밀이지롱
DB_DATABASE = ebdb

이와 같은 작업이 완료되면, 이제 워크벤치를 통해 데이터베이스를 관리할 수 있고, 앱에서 해당 데이터들을 사용할 수 있게된다.



참고 문헌 : youtube Cloud Guru

profile
최선이 반복되면 최고가 된다.

0개의 댓글