RDS MySQL 연결 - RDS MySQL yeongyeol

사용한 개발환경

MySQL 8.0.28
Spring Boot 2.6.5
java 11.0.9
IDE Intellij
Windows

AWS RDS (MySQL)

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

RDS MySQL 연결 - RDS MySQL yeongyeol

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

(2) 엔진 옵션 : MySQL

RDS MySQL 연결 - RDS MySQL yeongyeol

(3) 템플릿 : 프리 티어

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

RDS MySQL 연결 - RDS MySQL yeongyeol

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

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

RDS MySQL 연결 - RDS MySQL yeongyeol

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

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

RDS MySQL 연결 - RDS MySQL yeongyeol

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

2. 보안 그룹 생성

RDS MySQL 연결 - RDS MySQL yeongyeol

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

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

RDS MySQL 연결 - RDS MySQL yeongyeol

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

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

RDS MySQL 연결 - RDS MySQL yeongyeol

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

RDS MySQL 연결 - RDS MySQL yeongyeol

RDS MySQL 연결 - RDS MySQL yeongyeol

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

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

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

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

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

RDS MySQL 연결 - RDS MySQL yeongyeol

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

RDS MySQL 연결 - RDS MySQL yeongyeol

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

3. Workbench에서 DB 연동하기

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

(1) MySQL Workbench 설치

RDS MySQL 연결 - RDS MySQL yeongyeol

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

RDS MySQL 연결 - RDS MySQL yeongyeol

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

RDS MySQL 연결 - RDS MySQL yeongyeol

(4) 값을 채웁니다

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

RDS MySQL 연결 - RDS MySQL yeongyeol

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

RDS MySQL 연결 - RDS MySQL yeongyeol

(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. 프로젝트 빌드 후 실행

RDS MySQL 연결 - RDS MySQL yeongyeol

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

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

RDS MySQL 연결 - RDS MySQL yeongyeol

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

RDS MySQL 연결 - RDS MySQL yeongyeol

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

RDS MySQL 연결 - RDS MySQL yeongyeol

(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) 데이터베이스 인스턴스 상세 페이지로 돌아가, "수정" 버튼을 클릭합니다.

RDS MySQL 연결 - RDS MySQL yeongyeol

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

RDS MySQL 연결 - RDS MySQL yeongyeol

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

SELECT NOW();

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

RDS MySQL 연결 - RDS MySQL yeongyeol