EC2 를 이용해서 데이터베이스를 관리하는 방법은 두가지가 있다.
하나는 AWS에서 제공하는 RDS를 사용하는 것이고, 하나는 EC2에 직접 디비를 설치하는 것이다.
개인 또는 소수로 진행하는 프로젝트인 경우 전자는 좀 과?하다는 느낌이 들어서 두 번째 방법으로 진행하려고 한다.
1) MySQL 설치하기
sudo apt-get update
sudo apt-get install mysql-server
가장 먼저, EC2 서버에서 MySQL을 설치해준다.
sudo apt-get update
: 인스턴스에 무언가 설치하기 전에는 해당 명령어를 실행해주자. 우분투를 업데이트해준다.
sudo apt-get install mysql-server
: mysql을 설치한다.
2) bind-address 설정하기
/etc/mysql/mysql.conf.d
로 들어가보면 mysqld.cnf
라는 파일이 있다.
여기서 bind-address 값을 수정해주자.내리다보면 bind-address가 127.0.0.1
로 설정되어 있는데, 이를 0.0.0.0
으로 수정해준다.
127.0.0.1
즉, localhost
에서 오는 요청만을 허용하겠다는 의미이다.0.0.0.0
으로 바꾸어줌으로써 모든 네트워크로부터 오는 요청을 허용할 수 있다.3) MySQL 접속 및 권한 설정
sudo mysql -u root -p
를 입력, 위와 같은 화면이 뜨면 잘 접속이 된 것이다. (처음에 password는 없으므로 그냥 엔터를 눌러주면됨)
이제 유저를 생성하고 권한 설정을 해주자.
CREATE USER '원하는 유저명'@'%' IDENTIFIED BY '원하는 비밀번호';
grant all privileges on *.* to '원하는 유저명'@'%' with grant option;
다음과 같이 원하는 유저명, 비밀번호를 설정하고 해당 유저에게 모든 권한을 부여한다.
다음으로 데이터베이스를 생성한다.
create databases '원하는 db명' default character set UTF8;
show databases;
를 입력해보면 방금 생성한 데이터베이스가 존재하는 것을 확인 수 있다. (나의 경우 navada)
4) (DB 관리 IDE를 사용하는 경우) DB 연결하기
자신이 사용하는 데이터베이스 관리 도구(mysqlworkbench, dbeaver 등) 에서 방금 생성한 DB에 연결한다.
나의 경우 DBeaver를 통해서 진행했으며,
server host
: ec2 ip주소database
: 설정한 DB명username
: 설정한 유저명password
: 설정한 비밀번호이렇게 각각 적어준 후 완료 클릭!
5) 스프링부트 - application.yml 수정하기
이제 스프링부트 프로젝트의 resources > application.yml
파일을 수정해준다.
우리가 기존에 local에서만 db를 사용할때는 위와 같이 localhost:3306
주소로 사용했을 것이다.
이를 아래와 같이 수정해준다.
url
의 localhost를 EC2 ip주소로 변경하고, username
과 password
는 각각 설정한 값으로 바꿔준다.
이때 주로 로컬과 서버를 번갈아 사용해야할 경우가 많을 수 있다.
따라서 두 파일을 따로 생성하고 그때 그때 필요에 따라 사용하는 것을 추천한다.
6) 보안그룹 설정
이제 마지막으로 EC2의 보안그룹을 수정해준다.
MySQL의 포트번호인 3306
을 추가해주어야한다.인바운드 규칙 > 3306 포트를 추가해준다.
7) 테스트
이제 스프링부트 서버를 띄워주고 ( jar파일 복사를 이용하는 경우, applicaion.yml을 수정했으므로 다시 build하고 jar 파일을 보내주어야함! )
서버로 요청을 보내보자!
요청에 맞는 데이터에 맞는 쿼리가 잘 실행되었음을 볼 수 있다.