카테고리 없음
72일차 [ AWS EC2 + MySQL + SSH 개발 환경 구축기 ]
HyunJung_Jo
2025. 5. 2. 17:20
이번 포스팅은 내가 직접 AWS EC2에서 MySQL 서버와 클라이언트를 설정하고, SSH 및 네트워크 연결까지 구성하면서 겪은 시행착오를 정리한 내용이다. 클라우드 환경에서 DB를 띄우고 다른 인스턴스에서 접속하는 기본 흐름을 처음부터 차근차근 따라가는 느낌으로 구성했다.
1. EC2 인스턴스 생성 및 기본 설정
EC2 인스턴스를 2개 생성했다:
- ec2-mysqlserver (MySQL 서버 역할)
- ec2-client (MySQL 클라이언트 역할)
두 인스턴스는 같은 VPC에 있어야 내부 통신이 가능하다. 퍼블릭 IP를 통해 외부 SSH 접속을 하고, 내부 통신은 프라이빗 IP로 한다.
SSH 키 설정
- 로컬에서 생성한 공개키(id_rsa.pub)를 EC2 인스턴스의 ~/.ssh/authorized_keys에 등록해야 비밀번호 없이 접속 가능하다.
- id_rsa.pub는 자물쇠, id_rsa는 그걸 여는 개인 열쇠다.
2. Hostname과 /etc/hosts 설정
서버 내부 설정
sudo hostnamectl set-hostname ec2-client-demo
sudo vim /etc/hosts
172.31.36.173 ec2-mysql-demo
172.31.33.117 ec2-client-demo
/etc/hosts는 반드시 [IP] [호스트명] 순으로 작성해야 한다. 반대로 쓰면 호스트 인식이 되지 않는다.
3. MySQL 설치 및 설정
MySQL 서버 설치 (ec2-mysqlserver)
sudo yum install mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
MySQL 클라이언트 설치 (ec2-client)
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
sudo yum install mysql-community-client
MySQL 외부 접속 허용 설정
- MySQL 설정파일 (/etc/my.cnf 또는 /etc/mysql/mysql.conf.d/mysqld.cnf)에서 bind-address를 0.0.0.0으로 설정
- 포트 3306이 열려 있어야 하며, EC2 보안 그룹에서 인바운드 규칙에 3306 포트 추가 필요
MySQL 사용자 생성 및 권한 부여
CREATE USER 'ec2'@'%' IDENTIFIED BY 'Qwer1234!';
GRANT ALL PRIVILEGES ON *.* TO 'ec2'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
4. 접속 테스트 및 에러 대응
접속 명령어 (ec2-client → ec2-mysqlserver)
mysql -u ec2 -h ec2-mysql-demo -P 3306 -p
주요 에러 사례와 해결
- Unknown MySQL server host 'xxx' → /etc/hosts에 올바른 형식으로 등록되어 있지 않음 (순서 확인)
- Access denied for user → 비밀번호 오류 or 해당 사용자에게 권한이 없거나 host 범위가 제한됨
- Can't connect to MySQL server (111) → MySQL이 실행 중이 아닌 경우, 보안 그룹 또는 방화벽에서 차단 중일 수 있음
마무리
처음에는 EC2끼리 호스트 이름으로 통신이 안 되거나, MySQL 접속이 거절되면서 당황했지만 하나하나 원인을 추적하면서 결국 정상 연결까지 완료했다. 단순히 설치하는 것을 넘어서, 네트워크 이해와 SSH 인증 구조, MySQL 권한 설정 등 다양한 개념이 자연스럽게 정리되는 경험이었다.
다음에는 이 구성을 Docker나 Ansible 같은 자동화 툴로 정리해볼 계획이다.