우당탕탕
AWS RDS와 EC2 MySQL 직접 써보며 결정한 선택 기준과 세팅 절차 본문
AWS에서 MySQL 데이터베이스를 구축하려고 할 때, RDS와 EC2 MySQL 중 어떤 걸 써야 할지 꽤 고민하게 되더라고요. 저도 처음에 둘 다 써보고 비교하다가 생각보다 설정 절차나 운영 이슈에서 차이가 크다는 걸 알게 됐어요.
이 글에서는 제가 직접 AWS 콘솔과 CLI를 이용해서 AWS RDS 인스턴스와 EC2 서버에 MySQL 직접 설치를 한 경험을 토대로, 단계별 신청 및 세팅 과정을 공유할게요. 각 과정에서 주의해야 할 점과 삽질했던 부분도 최대한 상세히 적었으니 참고하시면 도움이 될 겁니다.
AWS RDS와 EC2 MySQL, 준비 환경과 버전
저는 AWS 서울 리전(ap-northeast-2)에서 작업했어요. MySQL 버전은 RDS는 8.0.33으로 선택했고, EC2에서는 Amazon Linux 2에 직접 설치해서 8.0.32 버전을 사용했습니다.
AWS CLI 버전은 aws-cli/2.12.0로 최신(작성 시점) 상태였고, 콘솔 UI를 기본으로 작업했습니다.
AWS RDS vs EC2 MySQL 어떤 걸 써야 할까 관련 정보
AWS RDS MySQL 인스턴스 신청하고 세팅한 순서
사실 이 부분이 가장 쉬운 편인데도, 처음 할 땐 어디부터 해야 할지 막막하더라고요. 저는 다음 순서로 RDS를 세팅했어요.
- AWS 콘솔 로그인 후 RDS 서비스 접속
- "데이터베이스 생성" 클릭해서 "표준 생성" 선택
- 엔진 옵션에서 MySQL 8.0.33 선택
- 사용 목적에 맞게 인스턴스 클래스 선택(개발용이면 db.t4g.micro 추천)
- 스토리지 기본값 유지 또는 자동 확장 설정
- DB 인스턴스 식별자, 마스터 사용자명과 비밀번호 입력
- VPC, 서브넷 그룹, 퍼블릭 액세스 여부 확인(개발용이면 퍼블릭 액세스 "예"로 설정)
- 보안 그룹 설정 단계에서, 내 IP 또는 사용할 서버 IP 허용하는 규칙 추가
- 생성 버튼 클릭 후 대기(약 5분)
이렇게 하면 RDS 인스턴스가 준비되고, 엔드포인트를 확인해 MySQL Workbench 등에서 접속할 수 있어요.
# 예시: AWS CLI로 RDS 인스턴스 엔드포인트 조회
aws rds describe-db-instances --query 'DBInstances[?DBInstanceIdentifier==`mydb-instance`].Endpoint.Address' --output text
그리고 보안 그룹 설정에서 흔히 하는 실수는, 자신의 IP를 추가하지 않거나 MySQL 기본 포트인 3306을 열지 않는 경우예요. 이러면 "접속 거부" 오류를 겪게 됩니다.
AWS RDS vs EC2 MySQL 어떤 걸 써야 할까 관련 정보
EC2에 MySQL 직접 설치하며 겪은 단계별 세팅
그런데 제가 직접 EC2에 MySQL을 설치할 때는 세팅 절차가 좀 더 복잡했어요. 직접 설치를 선택한 이유는 RDS보다 비용을 절감하고, 더 세밀하게 설정하고 싶었기 때문인데요. 순서는 대략 이랬어요.
- AWS EC2 인스턴스 생성 (Amazon Linux 2, t3.micro 선택)
- 보안 그룹 생성 및 MySQL 포트 3306, SSH 포트 22 열기
- 키 페어 다운로드 후 SSH 접속 준비
- SSH로 EC2 접속 후, yum 업데이트 및 MySQL 설치 명령 수행
- MySQL 서비스 시작 및 root 비밀번호 설정
- 외부 접속 가능하도록 MySQL 설정 파일 수정
- 방화벽(iptable)과 보안 그룹에서 포트 확인
- MySQL 접속 테스트 및 사용자 권한 구성
각 단계에서 구체적인 명령어를 보면 이렇습니다.
# EC2 접속 후 업데이트
sudo yum update -y
# MySQL 설치
sudo yum install -y mysql-server
# MySQL 서비스 시작
sudo systemctl start mysqld
sudo systemctl enable mysqld
# 초기 임시 root 비밀번호 확인
sudo grep 'temporary password' /var/log/mysqld.log
# mysql_secure_installation 실행 (root 비밀번호 변경 및 보안 설정)
sudo mysql_secure_installation
# my.cnf 파일 편집 (Bind Address 수정해서 외부 접속 허용)
sudo vi /etc/my.cnf
# [mysqld] 섹션에 bind-address=0.0.0.0 추가
# MySQL 서비스 재시작
sudo systemctl restart mysqld
이렇게 한 뒤에, AWS 보안 그룹에서 MySQL 포트 3306을 허용해줘야 외부에서 접속이 가능해져요.
AWS RDS vs EC2 MySQL 어떤 걸 써야 할까 관련 정보
여기서 막혔던 부분과 해결한 과정
제가 가장 크게 헤맸던 게 MySQL 외부 접속 허용 문제였어요. EC2에 설치한 MySQL이 localhost에서만 접속 허용 상태라, 외부에서 접속할 때 오류가 났거든요.
에러 메시지는 대략 이렇게 뜨더라고요.
ERROR 1130 (HY000): Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server
이걸 잡으려면 다음 두 가지를 꼭 확인해야 해요.
- MySQL 설정 파일에서 bind-address를 0.0.0.0으로 변경 (기본은 127.0.0.1)
- MySQL 내부에서 사용자별 호스트 허용 설정을 수정해야 함 (예: '%' 로 모든 IP 허용)
MySQL 접속 후 아래 명령으로 사용자 권한을 바꿨습니다.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '새비밀번호';
mysql> CREATE USER 'myuser'@'%' IDENTIFIED BY '비밀번호';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
여기에서 'myuser' 대신 본인이 쓸 계정을 만들고, 신뢰 가능한 IP 범위만 허용하는 게 보안상 좋아요.
저는 이렇게 선택했고, 이런 경우 AWS RDS가 편해요
결국 저는 처음에 개발용이나 간단한 테스트 용도는 RDS로 빠르게 만들고, 운영 단계에서 직접 커스텀 설정을 많이 해야 하는 경우 EC2에 직접 MySQL 설치하는 방식을 택했어요.
RDS는 백업, 모니터링, 자동 패치 등이 자동이라 신경 쓸 게 적지만, 자유도가 떨어지죠. 반면 EC2 MySQL은 모든 걸 직접 관리해야 해서 비용은 저렴하지만 운영 부담이 큽니다.
자주 물어보시는 질문과 답변
Q. RDS에서 성능 튜닝 가능할까요?
A. RDS도 파라미터 그룹을 통해 일부 튜닝은 가능합니다. 하지만 OS 레벨 설정이나 커널 최적화 같은 깊은 레벨은 불가능해요.
Q. EC2 MySQL 보안은 어떻게 강화해야 하나요?
A. 보안 그룹, 네트워크 ACL 설정을 엄격히 하고, MySQL 사용자 호스트 제한, 암호 정책, SSL 연결을 반드시 적용하세요.
Q. 비용 차이가 큰가요?
A. 일반적으로 RDS는 관리형 서비스라 비용이 좀 더 높아요. EC2에 직접 설치하면 저렴하지만 시간과 노력이 더 들어갑니다.
AWS 내에서 MySQL을 구축할 때, 이 글에서 알려드린 단계별 순서와 설정값을 그대로 따라 하시면 큰 문제 없이 진행할 수 있을 거예요. 저도 이렇게 차근차근 진행하며 막힌 부분을 해결했으니 참고하세요.
'Tech > AWS' 카테고리의 다른 글
| AWS IAM 권한 설정 처음 할 때 제가 헷갈렸던 부분과 해결법 (0) | 2026.07.09 |
|---|---|
| AWS SES로 이메일 발송할 때 제가 겪은 문제와 해결 방법들 (0) | 2026.07.07 |
| AWS API Gateway와 Lambda 서버리스 구축하며 겪은 현실적인 Q&A (0) | 2026.06.22 |
| AWS 비용 예상보다 많이 나왔을 때 원인 찾고 대처한 경험담 (0) | 2026.06.22 |
| AWS Secrets Manager로 DB 비밀번호 관리해보니 꼭 챙겨야 할 체크리스트 (0) | 2026.06.20 |
