EC2 4장 - EC2 DB 구축(MariaDB)

기운찬곰·2020년 8월 30일
5

AWS

목록 보기
4/5
post-thumbnail

시작하기에 앞서서...

이제 본격적으로 Database를 구축해야한다. 2가지 방법이 있는데 첫번째로는 EC2에다가 직접 설치해서 관리하는 것이다. 두번째 방법은 RDS 서비스를 이용하는 것이다. 이 두가지의 차이를 알아보고 이 중에서 필자는 첫번째 방법으로 구축을 해보겠다.


AWS RDS란?

  • 아마존 관계형 데이터베이스 서비스(Amazon Relational Database Service) 또는 아마존 RDS(Amazon RDS)는 아마존 웹 서비스(AWS)가 서비스하는 분산 관계형 데이터베이스이다.

  • 데이터베이스 소프트웨어를 패치하거나 데이터베이스를 백업하거나 시점 복구를 활성화하는 것과 같은 복잡한 관리 프로세스들은 자동으로 관리된다.

  • 애플리케이션 내에서 관계형 데이터베이스의 설정, 운영, 스케일링을 단순케 하도록 설계된 클라우드 내에서 동작하는 웹 서비스이다.

  • 스토리지와 연산 자원들을 스케일링하는 것은 하나의 API 호출로 수행할 수 있다.

    위키피디아 참고

그니까 쓰면 여러모로 편리함을 제공해준다는 의미이겠다. 지원하는 DB는 총 6개로 아래와 같다.

RDS 요금 : https://aws.amazon.com/ko/rds/pricing/
(가장싼게 하루에 대략 750원 정도로 예상, 프리티어는 1년간 무료(단일 AZ db.t2.micro 인스턴스인 경우에만 해당))


EC2에 DB 직접 설치

프리티어도 끝난 저같은 학생 신분은 EC2에다가 RDS까지 하면 한달에 3만원 정도 깨질텐데 조금 그 돈이 아까울 수 있겠습니다.

그래서 EC2에다가 직접 DB를 설치해보는 과정을 실습해보도록 하겠습니다. 직접 설치하고 운영해보는 것도 공부에 도움됩니다.

1단계. MairaDB 새 버전 저장소 추가 및 설치

처음에 무턱대고 설치했다가 10.1버전(상당히 구버전)을 설치한 경험이 있기때문에 설치전에 무엇을 설치하려는 건지, 버전은 어떻게 되는지 잘 확인할 필요가 있습니다.

MariaDB 패키지 저장소 안내 페이지 : https://downloads.mariadb.org/mariadb/repositories

이런식으로 자신이 사용중인 리눅스와 그버전, MariaDB버전, 그리고 다운받을 서버를 선택해주면 됩니다.

그럼 그 아래 명령어가 나오는데 이걸 그대로 입력하시면 됩니다.

$ mysql -V
mysql  Ver 15.1 Distrib 10.5.5-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

설치가 완료되면 버전을 한번 확인해 봅니다. 10.5인 최신버전이 설치된 것을 볼 수 있습니다.


2단계. 보안설정

$ sudo mysql_secure_installation

질문1. Enter current password for root
그냥 엔터. 마리아DB를 설치하고, $ sudo mysql_secure_jinstallation 를 통해 처음 설정하는 경우라면 ENETER를 치고 넘어가면 된다.

질문2. Switch to unix_socket authentication
No. unix_socket이 무엇인지에 대해서는 다른 시리즈에서 자세하게 다루도록 하겠다.

질문3. Change the root password?
Yes. mariaDB 접속시 root 패스워드를 변경해주었다.

질문4. Remove anonymous users?
익명 사용자의 접속여부를 묻는다. 나는 Yes로 했다.

질문5. Disallow root login remotely?
127.0.0.1 localhost외에 다른 IP로 root 접속의 가능 여부를 묻는다. 원격을 쓸 거면 No, 아니라면 Yes를 선택한다.

질문6. Remove test database and access to it?
마리아DB 설치시 기본적으로 제공되는 test 데이터베이스 삭제여부를 물어보는것. Yes

질문7. Reload privilege tables now?
마지막으로 프리빌리지(privilege) 테이블의 재시작 여부를 묻는다. 꼭 Yes


3단계. 접속

$ mysql -u root -p

접속까지 완료했다.


계정 생성 및 권한 부여

1. 사용자 조회

use mysql;
select user, host, password, plugin from user;

2. 사용자 생성

DB를 사용할때는 root 계정은 웬만해서는 쓰지 않는게 좋다고 배웠다. 따라서 사용자를 하나 추가하고 권한을 부여해줄 것이다.

create user 'test'@'localhost' identified by 'test1234';

원격 접속을 허용하려면 localhost대신 %를 써준다.

3. 권한 부여

grant all privileges on test_database.* to test@'localhost';

위 명령의 의미는 test@'localhost'이라는 계정에게 test_database라는 Database를 마음대로 할 수 있는 권한(*)을 부여하겠다는 소리이다.

4. 수정 적용

flush privileges;

반드시 수정이 끝났으면 위 명령어를 수행해야 한다. 그래야 최종적으로 적용이 된다.

5. 외부접속 허용

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

다음과 같이 bind-address를 주석 처리한다.

그리고 MySQL 서비스를 재시작한다.

service mysql restart 

6. AWS 보안그룹 인바운드 규칙 추가

mysql 3306포트를 뚫어준다. 그리고 나서 외부접속이 잘 되나 시도 해보자.

헤이디SQL로 접속한 결과 성공적이다. 외부 접근을 해주면 상당히 관리하기가 쉬워지는 반면 보안에 취약해질 수도 있으니 주의.

7. DB 생성

기존 프로젝트에서 사용중인 DB와 Table을 Create해준다.


사이트 오픈

드디어 정리가 끝났다...ㄷㄷ


마침

참고 사이트

profile
배움을 좋아합니다. 새로운 것을 좋아합니다.

0개의 댓글