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
https://sunnyfterrain.github.io/devlog/tips-ec2.html
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
로그인 후 보안 설정을 해줘야한다.
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를 적어주고,
포트 또한 위에서 설정한 포트로 지정해 주면 외부에서 접속이 가능해진다.
'프로젝트 > INMATE 인천 맛집 소개' 카테고리의 다른 글
INMATE / ssh 22포트 접속 불가 에러 (0) | 2022.10.20 |
---|---|
INMATE / 서버에서 빌드 후 db와 axios 연결의 문제 (0) | 2022.10.19 |
INMATE / Info 페이지 구성 (0) | 2022.10.08 |
INMATE / full-page-scroll 연습 (0) | 2022.09.28 |
INMATE / express 서버에서 웹 불러오기 (0) | 2022.09.27 |