이 글은 '스프링부트와 AWS로 혼자 구현하는 웹 서비스 - 이동욱(jojoldu)'을 공부하며 작성한 글로 생략된 내용은 책을 구매해서 확인하는 것을 권장합니다.
참고 소스코드 깃허브 https://github.com/jojoldu/freelec-springboot2-webservice
http://www.yes24.com/Product/Goods/83849117
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - YES24
가장 빠르고 쉽게 웹 서비스의 모든 과정을 경험한다. 경험이 실력이 되는 순간!이 책은 제목 그대로 스프링 부트와 AWS로 웹 서비스를 구현한다. JPA와 JUnit 테스트, 그레이들, 머스테치, 스프링
www.yes24.com
책의 7장에서 내 PC에서 RDS 접속을 하는 과정(인텔리제이 커뮤니티 버전 데이터베이스 연동 등)과 RDS와 EC2 연동 확인에 대해 정리한 글입니다.
내 PC에서 RDS 접속
1. RDS의 보안 그룹에 내 PC의 IP 추가
1-1. 데이터베이스 이름 클릭(세부 정보로 이동) -> VPC 보안그룹 항목 클릭
1-2. EC2에 사용된 보안그룹의 그룹ID 복사
1-3. RDS 보안그룹을 선택(1-1에서 선택한 보안 그룹)하고 인바운드 규칙 편집 클릭 -> 아래와 같이 수정 -> 변경사항 저장
*복사한 그룹ID가 있는 그룹이 아닌 RDS 보안그룹이다. 복사한 그룹ID가 있는 그룹의 인바운드 규칙을 편집하면 인텔리제이에서 Connection이 실패한다. 경험담이다.
인바운드 규칙 유형으로 MySQL/Aurora 선택시 자동으로 3306 포트가 선택된다.
위와 같이 하면 EC2와 RDS간에 접근이 가능해진다.
EC2는 하나의 서버이기 때문에 EC2에서 접근할 때, EDS 보안 그룹의 인바운드 규칙을 추가해주어야 한다.
EC2를 하나만 사용한다면 해당 인스턴스의 IP만 추가하면 되지만, 이후에 2대, 3대가 되면 매번 추가하기에는 불편함이 있다.
-> RDS 보안 그룹의 인바운드 규칙에 EC2 인스턴스의 보안 그룹 id를 추가하여 보안 그룹간의 연동을 진행한다.
Database 플러그인 설치
로컬에서 원격 데이터베이스로 붙을 때, GUI 클라이언트를 많이 사용하는데, MySQL의 대표적인 클라이언트로는 Workbench, SQLyog(유료), Sequel Pro(맥 전용), DataGrip(유료)등이 있다.
본인이 선호하는 틀을 사용하면 된다.
여기서는 인텔리제이에 Database 플러그인을 설치해서 진행한다.
* 인텔리제이의 공식 플러그인은 아니다. 인텔리제이 유료 버전을 사용하면 공식적으로 더 강력한 기능의 데이터베이스 기능 사용 가능
1. RDS 정보 페이지 -> 만든 데이터베이스 이름 클릭 -> 연결 &보안에서 엔드포인트 확인 (접근 가능한 URL로 메모해두자!)
2. 인텔리제이 -> Plugins -> database 검색 후 설치
3. 설치후 인텔리제이 재시작 -> Action 검색 -> Database Browser 실행 -> + -> MySQL 클릭
Action 검색 단축키
- 맥 : Command + Shift + a
- 윈도우/리눅스 : Ctrl +Shift + a
MariaDB는 MySQL 기반이므로 MySQL을 사용하면 된다.
4. RDS 접속 정보 직성 -> Test Connection -> Connection Successful 메시지 -> Apply -> Ok
아래처럼 본인의 RDS 접속 정보를 작성한다.
Host에는 앞에서 확인해둔 엔드포인트를 등록하면 된다.
5. Open SQL Console(아래 이미지 노란 동그라미) -> New SQL Console 선택 -> Console name 작성 및 create
6. 생성한 콘솔창에서 아래 쿼리 문을 작성 및 드래그로 선택 -> 위쪽에 있는 화살표(Execute Statement) 클릭
생성한 콘솔창에서 쿼리가 수행될 데이터베이스 선택하는 쿼리 실행
use AWS RDS 웹 콘솔에서 지정한 데이터베이스명;
springboot-webservice가 아닌 springboot_webservice이다. RDS 생성시 database명에 '-'를 사용할 수 없어 _로 작성한 것을 잊지 말자!
아래처럼 결과가 나오면 쿼리가 정상적으로 수행된 것이다.
7. 데이터베이스가 선택된 상태에서 character_set, collation, 타임존 설정 적용되었는지 확인
7-1. 아래 쿼리문으로 현재 설정 확인
show variables like 'c%';
위 결과를 보면 character_set_database, collation_connection 2가지 항목은 이전에 설정한 utf8mb4이 아닌 latin1로 되어있다.
위 2개의 항목은 MariaDB에서만 RDS 파라미터 그룹으로는 변경이 안된다.
-> 직접 변경해줘야 한다.
7-2. 직접 변경하기 위해 아래 쿼리문 실행
ALTER DATABASE springboot_webservice
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_general_ci';
위 쿼리문 실행 후 다시 설정을 확인하면
2가지 항목이 잘 변경된 것을 확인할 수 있다.
7-3. 타임존 확인
select @@time_zone, now();
실행해보면 Asia/Seoul로 잘 적용된 것을 확인할 수 있다.
8. 한글명 데이터가 잘 들어가는 지 확인
아래 쿼리문 차례대로 실행
* 테이블은 만들어질 당시에 설정값을 그대로 유지하고 있어, 자동 변경이 되지 않고 강제로 변경해주어야 한다.
-> 테이블은 모든 설정이 끝난 후 생성하는 것을 추천!
CREATE TABLE test (
id bigint(20) NOT NULL AUTO_INCREMENT,
content varchar(255) DEFAULT NULL,
PRIMARY KEY(id)
) ENGINE=InnoDB;
insert into test(content) values ('한글테스트');
select * from test;
EC2에서 RDS에서 접근 확인 (연동 잘되었는지 체크)
6장 부분에서 진행한 대로 EC2에 ssh 접속 진행
putty 실행 -> springboot-webservice 선택 -> open
MySQL 접근 테스트를 위해 MySQL CLI 설치
*실제 ec2의 MySQL을 설치해서 쓰는게 아닌 명령어 라인만을 쓰기 위해 설
sudo yum install mysql
설치가 완료되면
mysql -u 계정 -p -h Host주소
명령어를 실행하고 password 입력후 엔터를 치면 아래 이미지와 같이 나온다.
RDS에 접속되었으니 실제 생성한 RDS가 맞는지 데이터베이스 목록 확인
show databases;
생성했던 springboot_webservice라는 데이터베이스가 있는 것을 확인할 수 있다.
'스프링부트와 AWS로 혼자 구현하는 웹서비스' 카테고리의 다른 글
EC2 서버에 프로젝트 배포하기 - 스프링부트 프로젝트로 RDS 접근 및 EC2에서 소셜 로그인 (0) | 2023.03.29 |
---|---|
EC2 서버에 프로젝트 배포하기 - EC2에 프로젝트 Clone 및 배포 스크립트 작성(외부 Security 파일 등록) (0) | 2023.03.27 |
AWS에 데이터베이스 환경 구축 - AWS RDS(MariaDB) 인스턴스 생성 및 파라미터 설정 (0) | 2023.03.15 |
AWS 서버 환경 구축하기 - AWS EC2 (window EC2 접속) (0) | 2023.03.13 |
스프링 부트 기존 테스트에 시큐리티 적용하기 (feat. 책과 달리 테스트 4개 실패하는 이유) (0) | 2023.03.08 |
댓글