🚀 PuTTY로 WordPress 서버를
점프호스트 삼아 MySQL 접속하기
기존 WordPress 서버를 활용한 스마트한 데이터베이스 접근 방법
💡 이전 포스팅 recap: OCI에 WordPress 서버를 구축했었죠! 오늘은 이 서버를 점프호스트로 활용하여 프라이빗 서브넷의 MySQL에 접속하는 효율적인 방법을 알아보겠습니다.
🤔 왜 점프호스트를 사용하나요?
프라이빗 서브넷의 MySQL에 접근하는 방법은 여러 가지가 있습니다. 이전에 살펴본 Bastion 서비스도 좋은 방법이지만, 이미 퍼블릭 서브넷에 WordPress 서버가 있다면 이를 활용하는 것이 더 경제적이고 효율적입니다.
| 접근 방법 | 비용 | 설정 복잡도 | 세션 제한 | 추천도 |
|---|---|---|---|---|
| WordPress 점프호스트 | 무료 (기존 서버 활용) | 낮음 | 없음 | ⭐⭐⭐⭐⭐ |
| OCI Bastion 서비스 | 시간당 요금 | 중간 | 3시간 | ⭐⭐⭐⭐ |
| 별도 Bastion 서버 | 추가 인스턴스 비용 | 높음 | 없음 | ⭐⭐⭐ |
📋 필요한 준비물
- PuTTY - SSH 클라이언트 (여기서 다운로드)
- WordPress 서버 정보:
- 공인 IP 주소
- SSH 프라이빗 키 파일 (.pem 또는 .ppk)
- MySQL 서버 정보:
- 프라이빗 IP 주소
- 데이터베이스 접속 계정 정보
⚙️ 단계별 설정 방법
- PuTTY 실행
- Session 설정:
- Host Name: WordPress 서버의 공인 IP
- Port: 22
- Connection type: SSH
- Connection → SSH → Auth → Credentials로 이동
- Private key file for authentication에서 WordPress 서버 접속용 프라이빗 키 선택
- Connection → SSH → Tunnels로 이동
- 다음 정보를 정확히 입력:
- Source port: 3306 (로컬에서 사용할 포트)
- Destination: MySQL_프라이빗_IP:3306
- 예시:
10.0.2.162:3306
- Add 버튼 클릭
- Session 메뉴로 돌아가기
- Saved Sessions에 의미있는 이름 입력
예:WordPress-MySQL-Tunnel - Save 버튼 클릭
터널링된 세션이 열린 상태에서 MySQL 클라이언트로 접속:
🔒 보안 고려사항
🔑 SSH 키 관리
- 프라이빗 키는 안전한 위치에 보관 (암호화된 폴더 권장)
- 키 파일 권한 설정 확인 (Windows: 사용자만 읽기 권한)
- 정기적인 키 로테이션 고려
🛡️ 방화벽 설정
💼 실무 운영 팁
- Auto-reconnect 설정: Connection → SSH → 'Enable TCP keepalives' 체크
- 세션 타임아웃 방지: Seconds between keepalives를 30으로 설정
- 보안: 사용하지 않는 세션은 즉시 종료
🔧 문제 해결 체크리스트
연결 실패 시 순서대로 확인:
🚀 고급 설정 및 최적화
🔄 자동 재연결 스크립트
네트워크 불안정 시를 대비한 자동 재연결 배치 파일:
📊 연결 모니터링
🚨 자주 발생하는 문제와 해결책
❌ 가장 흔한 실수들
- "Connection refused" 오류
- MySQL 서버가 실제로 실행 중인지 확인
- 프라이빗 IP 주소가 정확한지 확인
- 보안그룹에서 3306 포트가 WordPress IP로 열려있는지 확인
- "Permission denied" 오류
- SSH 키 파일 경로가 올바른지 확인
- 키 파일이 .ppk 형식인지 확인
- 키 파일 권한 설정 확인
- "Tunnel connection failed" 오류
- Destination 주소 형식 확인 (IP:PORT)
- 로컬 포트 3306이 다른 프로그램에서 사용 중인지 확인
✅ 접속 성공 확인하기
- MySQL 프롬프트가 정상적으로 나타남
@@hostname쿼리에서 MySQL 서버의 호스트명이 나타남- 데이터베이스 목록이 정상적으로 조회됨
실제 운영 환경에서는 점프호스트를 통한 접근이 매우 일반적입니다. Oracle 환경에서도 OEM, OID 같은 관리 도구들이 유사한 방식으로 작동하죠. 핵심은 네트워크 세그멘테이션과 최소 권한 원칙입니다.
⚡ 성능 최적화 팁
🚀 연결 속도 향상
💾 터널링을 활용한 자동 백업
점프호스트가 설정되었다면, 이를 활용한 자동 백업 스크립트를 만들 수 있습니다:
🖥️ MySQL Workbench로 GUI 접속
명령줄보다 GUI를 선호한다면 MySQL Workbench를 사용할 수 있습니다:
- PuTTY 터널 세션을 먼저 연결
- MySQL Workbench 실행
- 새 연결 생성:
- Connection Name: WordPress-MySQL-Tunnel
- Hostname: 127.0.0.1
- Port: 3306
- Username: admin
- Test Connection으로 확인
📊 다른 접근 방법과의 비교
| 항목 | WordPress 점프호스트 | OCI Bastion | 별도 Bastion 서버 |
|---|---|---|---|
| 초기 설정 시간 | 5분 | 15분 | 30분+ |
| 월 비용 (예상) | $0 | $10-20 | $30-50 |
| 세션 제한 | 없음 | 3시간 | 없음 |
| 확장성 | 중간 | 높음 | 높음 |
| 관리 복잡도 | 낮음 | 중간 | 높음 |
💡 코드 표현 개선 포인트
🎨 기존 코드 블록의 문제점과 개선사항
기존 문제점:
cp /etc/php.ini부분이 주석과 비슷한 색상으로 가독성 저하- 다크 배경에서 명령어와 경로 구분이 어려움
- 문법 하이라이팅이 부족함
개선된 스타일 적용:
- 명령어는 주황색으로 강조
- 경로는 초록색으로 구분
- 변수는 진한 주황색
- 주석은 회색으로 명확히 구분
🏢 실무 적용 시나리오
📈 개발팀 워크플로우
실제 개발 환경에서 이 방법을 어떻게 활용할 수 있는지 살펴보겠습니다:
- 개발자 DB 접근: 각 개발자가 개별 터널을 통해 안전하게 접근
- DB 마이그레이션: 스테이징 → 프로덕션 데이터 동기화
- 모니터링: 실시간 쿼리 성능 분석
- 백업 검증: 백업 파일의 무결성 확인
🔐 보안 체크리스트
🛡️ 필수 보안 점검 항목
- ✅ SSH 키는 암호로 보호되어 있나요?
- ✅ WordPress 서버 SSH 접근이 특정 IP로 제한되어 있나요?
- ✅ MySQL 서버는 WordPress 서버에서만 접근 가능한가요?
- ✅ MySQL 계정에 적절한 권한만 부여되어 있나요?
- ✅ 접속 로그를 정기적으로 검토하고 있나요?
- ✅ 비상시 접근 차단 절차가 마련되어 있나요?
🎯 핵심 정리
기존 WordPress 서버를 점프호스트로 활용하면 추가 비용 없이 안전하고 효율적인 데이터베이스 관리가 가능합니다. 특히 개발 환경에서 데이터베이스를 자주 관리해야 하는 경우, Bastion 서비스와 달리 세션 시간 제한이 없어 장시간 작업에 매우 적합합니다.
다음 포스팅에서는 이 터널링을 활용한 데이터베이스 백업 자동화와 모니터링 솔루션 구축에 대해 다뤄보도록 하겠습니다!
💬 궁금한 점이 있으시다면?
MySQL 터널링 설정 중 막히는 부분이나 추가로 궁금한 사항이 있으시면 댓글로 남겨주세요!
Oracle 미들웨어 경험을 바탕으로 실무적인 조언을 드리겠습니다. 😊