안녕하세요!
이번에는 ML model을 통해 생성되는 Data를 DB에 저장하기 위해 EC2로 mysql을 배포하고 외부에서 접속하기 위한 여러 설정방법에 대해 정리해보겠습니다.
mysql을 배포하는 방법은 여러가지가 있겠으나
기초적인 프로젝트를 진행하기 위해 EC2로 간편하게 배포해보았습니다.
저같은 초보에게는 이마저도 문제의 연속이더군요 ㅎㅎㅎ
1. EC2 instance 생성하기
EC2 instance를 먼저 생성해주겠습니다. 요구사항에 맞춰 spec을 설정해주세요.
저는 가장 기본적인 spec으로 진행했습니다.
- OS : ubuntu 20.04
- Instance type : t2.micro
- Configure storage : 32GB
2. mysql 설치하기
EC2 instance가 생성되었으면 접속합니다. 접속방법은 이 글에서 다루지 않겠습니다.
sudo apt-get install mysql-server
위 명령어를 입력하면 mysql이 설치됩니다.
3. 외부접속을 위해서 방화벽 허용 설정해주기
sudo ufw allow mysql
위 명령어는 mysql의 포트(3306)을 허용해주는 것이에요
ufw = ubuntu fire wall
만약 이 설정을 해주지 않으면 mysql workbench나 다른 어플리케이션에서 접속되지 않으니 주의해주세요~
4. mysql 실행하기
sudo systemctl start mysql
위 명령어로 mysql을 실행할 수 있습니다.
mysql을 실행하고 접속한 뒤에 또 설정해줘야 할 것들이 있으니 계속 따라와 주세요
5. mysql 접속하기
sudo /usr/bin/mysql -u root -p
이렇게 입력하면 비밀번호를 치라고 나오는데 처음에는 비밀번호가 설정되어 있지 않으니 그냥 엔터 쳐주면 됩니다.

캡쳐와 같은 화면으로 바뀌면 mysql에 성공적으로 접속한겁니다.
6. 외부접속 권한을 설정할 user를 생성하겠습니다.
먼저 user list를 한번 보겠습니다.
mysql> SELECT User, Host, authentication_string FROM mysql.user;

이렇게 나올것입니다. 이제 여기에 외부에서 접속할 유저를 만들어줄게요. Host가 localhost가 아니고 외부접속이 허용된 user가 필요한겁니다.
mysql> CREATE USER 계정아이디@'%' IDENTIFIED BY '비밀번호';
#예시: CREATE USER test2@'%' IDENTIFIED BY '1234';
이처럼 '%' 을 입력하면 외부 에서 접근하는 모든 ip가 허용됩니다. 보안상 ip를 제한해주어도 될것 같네요!
그리고 다시 user list를 확인하면 새로운 User가 있을 거에요.
계정별로 db접근 권한을 다르게 설정하고싶으면 아래의 명령어를 입력해주세요
mysql> grant all privileges on DB이름.* to 계정ID@'%';
mysql> flush privileges;
이렇게 하면 user별로 db접근 권한을 다르게 설정할수 있습니다.
7. mysql 설정파일 변경
이제 mysql 자체에 원격접속이 가능하도록 설정을 변경해줄거에요
'quit'를 쳐서 mysql을 나가주세요. 그리고 아래 명령어를 쳐주면됩니다.
cd /etc/mysql/mysql.conf.d
sudo vi mysqld.cnf
그러면 vim 편집창이 뜨는데
bind-address =127.0.0.1
이렇게 되어 있는 부분을
bind-address = 0.0.0.0
이렇게 변경해주고 수정사항을 저장하고 종료해줍니다. (esc + :wq 을 쳐주면 됩니다)
여기까지 모든 설정을 마쳐주셨으면 mysql workbench와 외부 프로그램에서 접근이 가능합니다.
참고: ec2 instance의 inbound rule도 외부ip가 접근가능하도록 설정해주어야 합니다. 이부분은 이글에서 다루지는 않겠습니다 :)
다음에는
DL modeling 후에 배포용 파일 생성 및 flask로 배포하는 방법
python과 aws s3를 연동해서 image upload하는 방법
에 대해 정리해보겠습니다. :)
도움이 되셨다면 하투 꾸욱~~
'Road to data engineer' 카테고리의 다른 글
| hbase 설치하는라 반나절 날린 썰... (0) | 2023.09.03 |
|---|---|
| Kafka 대체 넌 뭐늬?? (0) | 2023.09.02 |
| 프로젝트 준비2 : EC2 instance에서 파이썬 프로그램을 실행하기 위한 가상환경 세팅 방법 (0) | 2023.08.28 |
| 프로젝트 준비1 : ML model(feat. iris dataset) flask로 웹 배포하기 (0) | 2023.08.25 |
| 객체지향 언어 이제 끝2 (0) | 2023.08.23 |