MySQL은 기본적으로 localhost 에서만 접속이 가능하고, 외부에서는 접속이 불가능하다.
외부에서 접속하면 오류 메세지가 나온다!
따라서 EC2에 설치된 MySQL은 로컬이 EC2 서버이므로
내 컴퓨터에서 접속을해서 조작하기 위해선 몇가지를 해야한다.
인스턴스 생성
AWS 가입까지는 완료한 상태에서 진행한다.
지역을 서울로 바꿔준다.
서울에 인스턴스를 만들어볼 것이다.
다음으로 EC2 인스턴스를 생성해보자
왼쪽에 인스턴스를 클릭해서 들어간다.
나는 생성한 인스턴스가 없기때문에 아직 아무것도 뜨지 않는다.
인스턴스 시작을 눌러 생성해보자.
이름을 작성해주고(나는 프로젝트의 이름으로 했다)
AMI 를 선택해준다.
AMI란 EC2 인스턴스를 시작하는데 필요한 정보를 이미지로 만들어둔 것을 말한다.
인스턴스라는 가상머신에 운영체제 등을 설치할 수 있게 구워넣은 이미지라고 생각하면 된다.
여기선 ubuntu 을 선택한다
(Amazon Linux 로 선택했었다가 명령어가 다른점때문에 불편해서 다시 ubuntu로 만들었다 ㅠ)
다음은 인스턴스 유형을 선택한다.
프리티어에서 사용가능한 유형이 t2.micro 길래 이 유형을 선택했다.
이번엔 스토리지를 추가하는 부분이다.
이 부분은 하드 디스크라고 부르는 서버의 디스크를 이야기하는데, 서버의 용량을 설정하는 단계이다.
크기(GiB)의 디폴트 값이 원래는 8로 설정되어있는데, 프리티어는 30GB까지 사용이 가능하므로, 30으로 변경해준다.
EC2 인스턴스로 접근을 하기 위해서는 pem 키(비밀키)가 필요하다.
따라서 인스턴스를 생성하기 전, 마지막 단계로 할당할 pem 키를 선택해야 한다.
인스턴스는 해당 pem 키 외에는 접근을 허용하지 않는다.
일종의 마스터키 이기때문에 절대로 유출하면 안된다.
이 pem 키는 이후 EC2 서버에 접속할 때 필수로 필요한 파일이므로 잘 관리할 수 있는 디렉토리에 보관해야한다.
키페어 이름을 작성해주고 키 페어 생성을 누른다.
그럼 위와 같이 .pem 파일로 키페어가 다운받아진다.
인스턴스 시작을 누른다.
인스턴스가 생성되었다고 완료화면이 나온다.
인스턴스의 id 를 클릭하면 생성한 인스턴스를 확인할 수 있다.
인스턴스도 하나의 서버이기때문에 ip가 존재한다.
인스턴스를 생성할 때마다 항상 새로운 ip를 할당하는데,
추가적으로 동일한 인스턴스를 중지하고 다시 시작할때에도 새로운 ip가 할당된다.
이렇게 되면 매번 접속해야하는 ip가 달라지고, 이러면 pc에서 접근할 때마다 ip 주소를 확인해야할거다.
따라서 번거롭지않도록, 인스턴스의 ip가 변경되지 않는 고정ip를 가지게 해야한다.
이 고정 ip를 우리는 탄력적 ip 라고 부른다.
탄력적 IP 주소 할당을 클릭한다.
따로 건드릴 필요없이 할당 클릭
방금 생성한 탄력적 ip 와 아까 생성했던 EC2 주소를 연결한다
작업을 누르고, 탄력적 ip 주소 연결을 클릭한다.
인스턴스와 프라이빗 ip 주소를 선택하고 연결한다.
* 탄력적 ip 를 생성만 해두고 연결을 안하면 매달 소량의 비용이 청구된다고 한다.
따라서 생성한 탄력적 ip 는 반드시 연결을 해야하고, 연결을 안하면 삭제해줘야한다.
아까 만들었던 인스턴스에 들어가서 탄력적 ip 가 잘 연결이 되어있는지 확인해본다.
잘 들어가있다.
MySQL 설치 및 설정
이제 서버에 접속해서 mysql 을 설치해볼거다.
일단 서버에 접속해야한다. cmd 에서 ssh 접속을 해보려한다.(윈도우 기준)
로컬에서 ssh 를 이용하여 서버에 접근하려면 openssh 클라이언트가 깔려있어야한다.(없다면 깔기)
나는 깔려있는 것 같다.
이제 윈도우 cmd 창을 열고 다음과 같이 명령어를 입력한다.
이때 EC2에 접속하기 위해 사용되는 .pem 키가 있는 디렉토리에서 원격 접속을 시도해야한다.
나는 ssh에 접속하기 위해 푸티(putty)를 이용하려고한다.
putty 는 pem 키로 사용이 안돼서 pem 키를 ppk 파일로 변환해야한다.
따라서 puttygen 을 통해 아래 과정을 진행한다.
일단 putty 로 접속 전 puttygen.exe 파일을 실행한다.
상단의 Conversions 에 들어가 Import key 로 아까 EC2 인스턴스를 생성할때 받은 pem 키를 선택한다
그리고 Save private key 를 클릭하고 예를 클릭한다.
이어서 ppk 파일이 저장될 위치와 이름을 지정한다.(pem 파일과 똑같이 해줬다.)
이번엔 putty 를 실행한다.
Host name 에는 EC2 인스턴스 사용자 이름@인스턴스의 퍼블릭 IPv4 DNS 주소 이름(탄력적ip)
username 에는 ubuntu 를 작성한다 (Ubuntu 를 사용하기 때문. Amazon Linux 2 의 경우 ec2-user 라고 적어줘야함)
Port 에는 ssh 접속 포트인 22를 등록하고
connection type 은 ssh 를 선택한다.
왼쪽에 Connection > SSH > Auth 로 들어가 Browse 를 클릭한뒤 ppk 파일을 불러온다.
Session 탭으로 이동해서 Saved Sessions 에 이름을 적고 save 를 누른다.
그리고 open 을 통해 접속!
여기까지 Windows 에서 putty 를 통해 EC2 인스턴스 서버에 접속하는 과정이었다.
putty 쓰지 않고 cmd 에서 접속 하는 법
ssh -i 'pem키이름.pem' ubuntu@'퍼블릭IPv4주소'
이제 mysql 을 설치해보자
MySQL 설치
sudo apt-get update
sudo apt-get install mysql-server
MySQL 실행
sudo systemctl status mysql <- mysql 상태보기
일단 mysql 에 접속해보자
sudo mysql -u root -p
이때 Enter password 는 그냥 엔터치고 넘어가도 접속됨.
root host 의 접속권한을 체크해보자.
root 아이디는 보안을 위해서 외부 호스트 포트연결은 안하는게 좋아서, 새로운 아이디를 생성해 진행할거다.
select host,user,authentication_string from mysql.user;
새 아이디를 생성해보자
CREATE USER 'dawon'@'%' identified by '패스워드';
여기서 패스워드는 8자리 이상이어야한다.
접속 권한 설정
grant all privileges on *.* to 'dawon'@'%';
활성화
flush privileges;
select host,user,plugin,authentication_string from mysql.user;
를 했을 때 dawon 의 정보를 체크해본다.
이렇게 하면 workbench 를 사용해 dawon 이라는 아이디로 접속이 가능해진다.(root 는 접속이 불가능하다)
workbench 및 외부 mysql 접속을 위해선 mysql 설정 변경이 필요하다.
설정파일 폴더로 이동한다.
cd /etc/mysql/mysql.conf.d
그리고 ls 를 해보면 mysqld.cnf 라는 파일이 있을 거다.vi 에디터로 mysqld.cnf 파일을 열자
sudo vi mysqld.cnf
i 를 누르면 insert 모드로 변경된다.bind-address와 mysqlx-bind-address 를 다음과 같이 바꿔주자
esc 를 누른 후 :wq! + enter 를 하면 vi 에디터를 저장 후 종료할 수 있다.
mysql 서버를 재시작 해보자
sudo systemctl restart mysql
ip 주소 및 포트를 체크해보기 위해 아래와 같은 명령어를 쳐봤다.
netstat -tnlp
Command 'netstat' not found 오류가 뜬다. sudo apt install net-tools 를 해본다.
그리고 다시 netstat -tnlp 를 해보면
원래 12.7.0.0.1:3306 이던게 0.0.0.0:3306 이 되어있다.
MySQL workbench 로 접속
처음에 mysql 을 설치하면 같이 깔리는 mysql workbench 라는 걸 사용해볼거다.
connection 을 만들어주고, hostname, username 등을 알맞게 써준뒤 접속하고,
데이터베이스를 새로 생성해서 마련해준다.
이제 EC2 서버에 node.js 프로젝트를 배포해보자
npm 으로 node.js, npm 설치
sudo apt install nodejs
sudo apt install npm
설치 확인하기
node -v
npm -v
프로젝트 git clone 하기
(처음에 바로 git clone 'github https 주소' 를 해봤는데 fatal: could not create work tree dir '~~~' 오류가 났다.)
cd ~/
mkdir code
cd code
git clone 'github https 주소'
ls 명령어로 프로젝트가 잘 clone 받아졌는지 확인한다.
ls 프로젝트이름
cd 프로젝트이름
package 설치
npm install package.json -> dependency 에 정의된 라이브러리 모듈이 모두 설치됨
npm install
그리고 node 프로젝트 실행해보면 된다