개발 => 복습 후 재정리 대기/AWS

[AWS] Node.js, MySQL 환경 구축

장 상 현 2021. 7. 15.

1. ec2 구매


2. ec2 접속

 

 - git bash 실행

 

 - sudo chmod 400 키페어

 

 - ssh -i 키페어 ubuntu@aws ip

 

 - Node 설치

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs

node -v와 npm -v를 통해 제대로 설치되었는지 확인하자.

 

3. mysql을 설치

sudo apt-get update
sudo apt-get install -y mysql-server
sudo mysql_secure_installation

 

4. git clone 주소 로 프로젝트 클론

 

5. 프로젝트 폴더 안에서 npm i로 package 설치

 

6. sudo npx sequelize db:create —env production으로 DB를 생성

이 때 오류 발생.

오류:
Access denied for user 'root@'@'localhost'


원인:
기본적으로 초기설정되어있는 mysql의 root 계정의 패스워드 타입때문에 발생한 오류

해결방안:
$ sudo mysql -u root

mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;

mysql> update user set plugin='mysql_native_password' where user='root';
mysql> flush privileges;
mysql> select user, host, plugin from user;

 

7. 80포트로 들어오는 방문 객을 3000번 포트로 보내기

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

 

8. sudo npm start

오류 발생

오류:
Access denied for user 'root'@'localhost' (using password: YES)

원인:
root 사용자의 비밀번호가 맞지 않아서 발생한 오류

해결방안:
user 테이블의 password 컬럼을 update해주면 되는데,
내가 만든 ec2에 있는 mysql의 user테이블에는 password라는 column이 없었다.
대신, authentication_string이라는 필드가 있고, 이 컬럼이 password column을 대신한다.

그래서 다음과 같이
mysql> update user set authentication_string=password('1234') where user='root'; 
쿼리를 날리고 나니 정상 작동을 한다.

댓글