목차

반응형

https://support.cloud.engineyard.com/hc/en-us/articles/205408088-Access-Your-Database-Remotely-Through-an-SSH-Tunnel

tunnel ssh경우 쿼리를 모듈화해서 짜기가 곤란해서 난항을 겪고있었는데 매우 꿀팁이다.


cmd에서 ssh가 작동한다는 가정하에 진행한다.


ssh tunnel은 아래와 같이 ec2와 rds 2개의 서버가 있다고 쳤을때 rds는 외부에서 접근이 안되지만 ec2내부에서는 rds로 접근이 가능하다고 쳤을때 내 pc에서 ssh를 우회하여 rds로 접근하는 것이라고 생각하면 된다. (찾아보지는 않았음 뇌피셜임 ㅈㅅ)

 VPC에 있는 DB 인스턴스에 다른 VPC에 있는 EC2 인스턴스가 액세스


ssh -L 3307:rds주소:3306 아이디@ec2주소

상단의 사이트에 가보면 이처럼 명령어를 로컬 cmd(윈도우 기준)에다가 쳐야한다.


3307은 3306은 뭐 겹친다는데 그냥 따라했다.

ec2주소는 aws ec2로 접속하는 주소를 적는다.

아이디는 rds로 접속하는 계정명을 적는다.(흠 근데 rds와 ec2 접속 계정명이 같아서 rds 계정 아이디를 적는 것인지 확실치 않다. 설명에는 rds 계정명을 적으라고 나와있다.)

rds 주소는 aws에서 생성한 rds 주소를 적는다.


이렇게 적어서 실행을 해보면 잘된다. 안되면 설정상에 문제가 있는 것이다.



로컬 cmd에서 위 명령어를 실행했을때 모습 -> 일반적인 ssh 접속과 똑같은 결과


이후 로컬 node 앱에서의 db 주소를 127.0.0.1 이라고 놓고 작업을 하면 잘 작동한다.

var mysql      = require('mysql');
var connection = mysql.createConnection({
host : '127.0.0.1',
user : '아이디',
password : '비밀번호',
database: 'db명',
port: 3307
});

connection.connect(function(err) {
if (err) {
console.error('error connecting: ' + err.stack);
return;
}

console.log('connected as id ' + connection.threadId);
});

로컬 node 앱에서 mysql로 접속하는 코드는 위와 같다. 위의 코드를 실행해보면


잘 접속한다.


이제 mongodb를 mysql로 교체작업하러간다 에효...

반응형