-
python으로 private DB에 접속하기 (베스쳔 터널링, PyMySQL)Programing/OCI 2023. 11. 1. 20:45반응형
DB를 private한 공간에 만들면 당연히 local에서는 그냥 접속할 수 없습니다.
아래와 같은 과정을 거쳐야 합니다.
1) DB와 같은 보안로직을 가진 베스쳔 서버를 만들어야 합니다.
AWS라면 동일한 VPC 내에 EC2를, OCI라면 동일한 VCN 내에 VM을 만들어야 합니다.
2) VM(EC2)에서 DB에 접속 가능하도록 미리 세팅해줍니다.
3) VM(EC2)을 경유해(터널링) 로컬에서 DB로 접속합니다.
private에 위치한 DB에 python으로 접속해봅시다.
0. 구성
- Public Subnet(공용 서브넷)은 외부에서 접근 가능한 서브넷입니다.
- Private Subnet(전용 서브넷)은 해당 VCN 내에서만 접근 가능한 서브넷입니다.
- 로컬의 python에서 Private Subnet에 위치한 MySQL DB에 접속해 보도록 하겠습니다.
1. 사전 설정 (터널링용 베스쳔서버 생성, MySQL 세팅)
아래의 글에서
0. VM생성(bastion 용도), 접속 ~ 2. MySQL Shell에서 정상접속 가능여부 확인
까지의 과정을 진행해 주세요
OCI를 기준으로 설명하였지만, AWS에서도 개념은 일치합니다.
EC2 생성해서 mysql shell 설치하고 접속 잘 되는지 확인만 해주면 됩니다.
2. 로컬 컴퓨터에서 퍼블릭 VM(EC2)에 접속, 터널 생성
아래의 명령을 이용해서 터널을 생성해주세요
# ssh key 이용 ssh -i "{path-of-key-file}" -L {change_port}:{DB_private_ip}:{original_db_port} {username}@{VM_public_ip} # 예시 ssh -i "./ssh-key-Dev-VM.key" -L 3307:10.0.1.123:3306 ubuntu@xxx.xxx.xxx.xxx
이제 local의 3307포트는 터널링을 통해 DB와 연결됩니다.
3. Python으로 connect 만들기
import pymysql host = 'localhost' user = 'db_user_name' password = 'db_password' db = 'db_schema_name' port = 3307 conn = pymysql.connect(host=host, user=user, password=password, db=db, port=3307)
반응형'Programing > OCI' 카테고리의 다른 글
[OCI VM] https 인증하기 #2 로드 밸런서 설정 (0) 2024.04.02 [OCI VM] https 인증하기 #1 인증서 생성 (0) 2024.04.02 OCI VM으로 API 요청이 들어가지 않는 경우 (Could not send request) (0) 2023.10.04 OCI APEX #1. Workspace 생성하기 (0) 2023.09.06 OCI MySQL DB (MDB) #2. DB에 접속하기 (MySQL Workbench) (0) 2023.08.20