Spring Boot + AWS RDS (MySQL) 연동하기

u-nij·2022년 3월 31일
19
post-thumbnail

사용한 개발환경

MySQL 8.0.28
Spring Boot 2.6.5
java 11.0.9
IDE Intellij
Windows

AWS RDS (MySQL)

1. RDS 데이터베이스 생성하기


(1) 데이터베이스 생성 방식 : 표준 생성

(2) 엔진 옵션 : MySQL

(3) 템플릿 : 프리 티어

(4) 설정 : 식별자, 사용자 이름, 암호를 적절히 설정해줍니다.

(5) DB 인스턴스 클래스는 프리 티어 선택 시, 자동으로 버스터블 클래스로 설정됩니다.

(6) 스토리지 자동 조정은 임계값 초과시 요금이 부과되니 주의하세요!

(7) 퍼블릭 액세스 : 예
=> 협업할 때, 다른 개발자의 접근을 위해 허용으로 선택해주었습니다.
=> "아니요"로 선택해도 VPC 내부의 EC2 인스턴스는 데이터베이스에 접근할 수 있습니다.

(8) 보안 그룹 : 새로 생성
=> default로 설정돼도 나중에 변경 가능합니다.

(9) 데이터베이스 옵션 - 초기 데이터베이스 이름 : demo

2. 보안 그룹 생성


(1) 생성한 데이터베이스를 클릭해, 상세 화면으로 이동합니다.

(2) VPC 보안 그룹을 클릭해, 보안 그룹페이지로 이동합니다.

  • ec2-security : (기존에 만들어둔) EC2 인스턴스의 보안 그룹의 이름

(3) "보안 그룹 생성"을 클릭합니다.

(4) 보안 그룹의 이름과 설명을 적절히 설정합니다.

(5) 인바운드 규칙의 유형을 'MYSQL/Aurora'로 설정합니다.

(6) (기존 EC2 인스턴스가 있다면,) DB에 접근할 수 있도록 'ec2-security'의 보안 그룹을 선택합니다.

(7) 내 로컬 PC에서도 접근할 수 있도록 '내 IP'를 추가합니다.
=> 만약 접근이 필요한 다른 개발자가 있다면, IP 주소를 추가해주면 됩니다.

(8) "보안 그룹 생성" 버튼을 클릭합니다.

(9) 이제 다시, 생성한 데이터베이스의 상세 화면으로 이동해 "수정" 버튼을 클릭합니다.

(10) 기존 보안 그룹을 삭제하고, 새로 생성한 보안 그룹의 이름으로 변경해줍니다.

(11) 수정을 완료합니다.

3. Workbench에서 DB 연동하기

GUI 인터페이스인 Workbench를 설치해 DB를 연동해보겠습니다.

(1) MySQL Workbench 설치

(2) 추가 버튼을 클릭합니다.

(3) 데이터베이스 상세 화면의 '엔드포인트'와 '포트 번호'를 확인합니다. 포트는 기본값으로 3306입니다.

(4) 값을 채웁니다

Connection Name : Workbench에서 보여지는 DB 이름
Hostname : 데이터베이스 엔드포인트
Port : 데이터베이스 포트 번호
Username : 데이터베이스 생성시 설정했던 마스터 사용자 이름
Password : 데이터베이스 생성시 설정했던 마스터 암호

(5) 하단 "Test Connection" 버튼을 클릭해 '마스터 암호'를 넣은 후 성공적으로 연결했다는 알림창이 뜨면 "OK" 버튼을 누릅니다.

(6) 생성한 DB에 들어가면 'demo'라는 스키마가 보입니다. 생성할 때 설정해뒀던 '초기 데이터베이스'입니다.

Spring Boot 프로젝트에서 연동하기

1. build.gradle 설정

	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	runtimeOnly 'mysql:mysql-connector-java'

의존성에 위 코드를 추가해줍니다.

2. application.yml 설정

spring:
    datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://{엔드포인트}:{포트번호}/{(초기)데이터베이스}?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
        username: {마스터 사용자 이름}
        password: {마스터 암호}

제 경우에는 'demo'가 {(초기)데이터베이스}에 들어가게 됩니다!

github 레포지토리에 AWS 정보가 올라가지 않게 주의하세요!

3. 프로젝트 빌드 후 실행

Run(실행)했을 때 잘 돌아가면 연동은 끝입니다!

4. 추가 설정 - 시간 및 UTF8 지원

(1) "파라미터 그룹" 메뉴로 이동합니다.

(2) "파라미터 그룹 생성"을 클릭합니다. (기존 default는 수정이 불가능합니다.)

(3) 정보를 입력하고 "생성" 버튼을 누릅니다.

(4) 생성한 파라미터를 클릭해 상세 페이지로 들어간 후, "파라미터 편집"을 클릭합니다.

시간 설정

time_zone : Asia/Seoul로 변경

한글 설정

1. utf8로 변경

character_set_client
character_set_connection
character_set_database
character_set_filesystem
character_set_results
character_set_server

2. utf8_general_ci로 변경

collation_connection
collation_server

(5) 파라미터를 수정한 후에, "변경 사항 저장"을 클릭합니다.

(6) 데이터베이스 인스턴스 상세 페이지로 돌아가, "수정" 버튼을 클릭합니다.

(7) '추가 구성 - 데이터베이스 옵션 - DB 파라미터 그룹'을 생성한 파라미터로 변경한 후, 수정을 완료합니다.

(8) 데이터베이스 인스턴스를 "재부팅"한 후에, Workbench에서

SELECT NOW();

를 실행해 컴퓨터 시간과 비교해보면 옵션이 정상적으로 변경된 것을 확인할 수 있습니다.

profile
삶은 달걀이다

1개의 댓글

comment-user-thumbnail
2023년 4월 17일

감사합니다 좋은 정리네요

답글 달기