프로젝트/INMATE 인천 맛집 소개

수정) INMATE / AWS EC2를 이용한 DB만들기( Ubuntu, MariaDB )

58청춘 2022. 10. 13. 22:35
728x90

AWS에서는 DB를 인스턴스와 연결하는 방법은 주로 RDS(Relational Database Service)

관계형 데이터 베이스 서비스를 이용한다.

 

하지만, 나같은 취준생이 개인 개발 목적으로 사용하기에는 너무 부담스럽다....

그래서 선택한 방법은 EC2 내부에 DB를 생성하는 것이다.

 

구조는 지인이 설명해준 덕분에 빠르게 이해했다.

(나 혼자 2시간동안 구글링해도 안되는걸..... 한참 멀었다....)

이 처럼 DB는 인스턴스에 위치하며 로컬과 웹서버 양쪽으로 데이터를 보낼 수 있고,

웹서버에서는 요청을 받을 수 있다. (사진에서는 로컬에서 DB로 요청을 안보내는 것처럼 보이지만 가능하다)

수정(23-08-11)

클라이언트가 DB에 존재하는 데이터가 필요한 페이지 요청을 할 때는 웹서버로 요청을 보낸뒤 웹서버에서 DB에 있는 데이터를 조회 및 가져와 클라이언트에게 응답을 보낸다.

 

 

어디한번 해보자.

 

우선 EC2 설정에 관한 정보는 다음 글들을 참고해 설정해주었다.

https://developer-ping9.tistory.com/320?category=995441

 

[AWS] EC2 와 도메인 연결하기 (feat. 가비아)

# AWS 설정 1. Route 53 검색 후 호스팅 영역생성 2. 호스팅 영역 생성 설정  * 도메인이름에 구입할/한 도메인이름을 적는다. 3. 생성한 도메인의 레코드 생성 4. 레코드 생성 설정 5. 레코드 생성완료

developer-ping9.tistory.com

https://sunnyfterrain.github.io/devlog/tips-ec2.html

 

[AWS] AWS EC2 인스턴스에 React로 만든 웹페이지 배포하기

AWS에는 사용자의 취향에 맞는 각종 서버들이 있습니다. 흔히 우리가 리액트로 만든 웹페이지는 정적 웹페이지가 많고, 정적 웹페이지는 S3만으로도 충분하나 이번에 EC2로 웹페이지를 한번 배포

sunnyfterrain.github.io

 

EC2 설정을 다했다면, 내가 사용하는 mariadb 부터 설치해보자.

$ apt-get install mariadb-server

 

이후 어떠한 Error가 발생하지 않았다면,

root 아이디의 비밀번호를 설정해주도록 하자

//	비밀 번호 변경을 위한 코드
$ mysqladmin -u root -p password '적용할 비밀번호';

//	mariadb 실행하는 코드
$ mysql -u root -p
//	이후 등장하는 Enter Password에 비밀번호 입력(입력하면 안보이는게 정상)

 

하지만, 위와 같은 방법으로 로그인했을때 안될경우가 있다.

이때는 아래의 글을 참고하자.

https://www.lesstif.com/dbms/mysql-error-1698-28000-89555999.html

 

MySQL ERROR 1698 (28000): 에러 해결

예전 버전은 auth plugin 이 mysql_native_password 방식일 수 있으며 그럴 경우 아래 쿼리와 같이 mysql_native_password 로  설정하세요. 잘못 설정할 경우 root 로도 로그인이 불가능합니다.

www.lesstif.com

 

로그인 후 보안 설정을 해줘야한다.

1. 계정 권한 부여

  외부에서 로그인 할 계정으로 접속할 수 있도록 계정에 권한을 부여해준다.

 

//  지금은 root로 아이디로 사용하고 비밀번호는 접속하려 하는 비밀번호를 사용한다.
MariaDB [(None)]> GRANT ALL PRIVILEGES ON *.* to 'root'@'%' IDENTIFIED BY '비밀번호';

 

2. 환경설정 파일 수정

  CentOS와는 다르게 Ubuntu에서는 외부IP가 기본적으로 차단되어있어서

  default는 localhost만 접속이 허용된다.

~$ vi /etc/mysql/my.cnf

이 코드를 입력후 Edit 모드로 들어가 입력모드로 들어가기 위해 i를 누른뒤,

bind-address를 0.0.0.0으로 해주거나 허용할 IP 리스트를 적어준다.

또한 port는 기본적으로 3306으로 되어있거나 임의적으로 바꿔주어도 된다.

 

그리고 DB를 재시작해주자

~$ systemctl restart mysql.service

 

 

그리고 AWS 인스턴스에서 보안에서 위에서 설정한 포트를 설정해주면 

외부에서도 원격 접속이 가능해진다.

 

위에서 IP에는 인스턴스의 퍼블릭 IP를 적어주고

사용자와 암호는 mysql에서 설정된 id와 pw를 적어주고,

포트 또한 위에서 설정한 포트로 지정해 주면 외부에서 접속이 가능해진다.

 

 

 

728x90