[AWS, 스프링부트] RDS 없이 EC2에서 데이터베이스 사용하기( MySQL )

minji·2022년 8월 14일
1
post-thumbnail
post-custom-banner

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 으로 수정해준다.

  • 참고로 bind-address란 데이터베이스로 들어오는 요청중 어느 주소를 허용할것인지를 의미한다.
    기존에는 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주소로 변경하고, usernamepassword는 각각 설정한 값으로 바꿔준다.

이때 주로 로컬과 서버를 번갈아 사용해야할 경우가 많을 수 있다.
따라서 두 파일을 따로 생성하고 그때 그때 필요에 따라 사용하는 것을 추천한다.

6) 보안그룹 설정

이제 마지막으로 EC2의 보안그룹을 수정해준다.
MySQL의 포트번호인 3306 을 추가해주어야한다.인바운드 규칙 > 3306 포트를 추가해준다.

7) 테스트

이제 스프링부트 서버를 띄워주고 ( jar파일 복사를 이용하는 경우, applicaion.yml을 수정했으므로 다시 build하고 jar 파일을 보내주어야함! )

서버로 요청을 보내보자!
요청에 맞는 데이터에 맞는 쿼리가 잘 실행되었음을 볼 수 있다.

profile
SW Engineer
post-custom-banner

0개의 댓글