EC2에서 MySQL을 사용할 수 있는 방법은 3가지이다.
- AWS RDS 사용
- 로컬 환경에서 직접 MySQL 설치 후 사용
- Docker에서 DB Container image 다운로드
개인 프로젝트를 하면서 2번째 방법으로 개발을 진행했었는데, EC2에서 MySQL에 직접 연결했었던 과정을 답습하고자 이 글을 기록한다.
MySQL 적용 시 EC2가 생성이 되었다고 가정한다.
1. EC2 인바운드 규칙 설정
EC2에서 MySQL에 직접 접속하기 위해 MySQL 포트를 열어주어야 한다.
- EC2 > 보안 그룹
(사용 중인 보안 그룹의 이름을 모른다면, 사용 중인 EC2의 요약 페이지로 들어가 하단의 '보안' 탭에서 확인할 수 있다.)
인바운드 규칙 편집
아래와 같이 규칙을 추가하고 저장한다.

HTTP, SSH, 사용자 서버 포트, MySQL 서버 포트 총 네 개의 인바운드 규칙이 적용되어야 한다.
2. EC2에서 MySQL 접속하기
AWS EC2 인스턴스에 접속 한 뒤, apt를 업데이트한다.
sudo apt update
mysql 서버를 다운받는다.
sudo apt install mysql-server
중간에 'After this operation, 156 MB of additional disk space will be used.' 라고 묻는데, Y를 입력해주자.
잘 설치 되었는지 확인하려면, mysql --version 을 입력한다.
mysql에 접속
mysql -u root -p 명령어를 사용하면 deny되므로 sudo를 사용해야 접속이 가능하다.
sudo mysql -u root -p

비밀번호는 설정이 되어있지 않아서, 그냥 엔터 한 번 더 치면 위와 같이 접속이 된다.
root 계정 비밀번호 설정
mysql 이라는 이름의 데이터베이스를 사용한다.
use mysql

root 계정의 비밀번호를 변경한다.
alter user 'root'@'localhost' identified with mysql_native_password by '비밀번호';

변경사항을 적용시키고 종료한다.
FLUSH PRIVILEGES;
exit

3. 외부 접속 허용하기
외부 접속을 허용하기 위해 mysqld.cnf 파일을 수정해야 한다.
우선 아래 명령어로 root 권한을 부여한다.
sudo su
mysqld.cnf 파일이 있는 디렉토리로 이동한다.
cd /etc/mysql/mysql.conf.d
ls 명령어로 해당 디렉토리에 mysqld.cnf 파일이 있는지 확인할 수 있다.
vi 에디터로 mysqld.cnf 파일을 실행한다.
vi mysqld.cnf

위와 같이 파일이 열릴텐데, 하단의 bind-address를 0.0.0.0 으로 수정한다.
이후 mysql 서버를 재시작한다.
sudo service mysql restart
sudo mysql -u root -p
아까 설정한 비밀번호도 입력해주어야 한다.
root 유저를 계속 사용하는 것은 부적절하므로 유저를 만들어 권한을 부여해야 한다. (필자는 fbrjs으로 하도록 하겠다)
CREATE USER 'fbrjs'@'%' IDENTIFIED BY '비밀번호';
아래 명령어로 권한을 부여한다.
GRANT ALL PRIVILEGES ON *.* TO 'fbrjs'@'%';
4. MySQL Workbench로 연결 테스트하기
MySQL Workbench를 설치하여 새로 connection을 생성해준다.

- Hostname : EC2 퍼블릭 IP
- Username : 아까 생성해준 fbrjs 유저
- Password : 아까 설정해준 비밀번호 (Store in KeyChain을 누르면 설정 가능하다.)
Test Connection을 눌러 테스트가 완료되면 정상적으로 EC2에서 MySQL에 접속이 가능하다!
참고
MySQL과 AWS EC2 연결하기
EC2에 띄울 프로젝트(Django)가 MySQL과 연동된 상태라 EC2 내부에 MySQL을 설치하고 연결하고자 한다. AWS는 RDS라는 데이터베이스 서비스를 제공 중이고, MySQL을 지원한다. 보안, 운영 측면에서 상당히
woojin.tistory.com
'Infra & Cloud > AWS' 카테고리의 다른 글
[AWS] AWS RDS vs AWS Aurora 비교 분석 (2) | 2024.11.20 |
---|---|
[AWS] EC2 환경에서 Redis 구축하기 (0) | 2024.07.25 |
[AWS] EC2와 RDS 연결하기 (0) | 2024.07.25 |
[AWS] S3 이미지 업로드 및 EC2 연결하기 (0) | 2024.06.13 |
[AWS] EC2에서 https 프로토콜 적용하기 (0) | 2024.05.25 |