[NestJS] AWS DB Tunneling With Mysql Setting (터널링 및 Mysql 설정)
Programming/Node.js 2024. 11. 24. 14:13
Nest.js 에서 터널링 하는 방법을 아무리 찾아봐도 안되어서, 테스트를 위해 꼼수를 쓰기로 했다.
어차피 로컬에서 접속할때만 필요하고, 서버에 소스 올라가면 터널링이 불필요하므로, 이 방법으로 쓰기로 했다.
내가 터널링 해보려고 별짓을 다 했다.
내 PC -> 베스천 서버 -> 비공개 서버(Mysql 설치 서버)
(키페어 상태, 모두 3306 방화벽 오픈 상태)
우선 Nest.js 에 mysql을 사용하도록 npm으로 다운로드 한다.
1. 설정 파일을 셋팅하기 위해서 dotenv 를 설치한다.
npm install dotenv
2. mysql을 사용하기 위해서 mysql2를 설치한다.
npm install --save @nestjs/typeorm typeorm mysql2
3. Root 디렉토리에 [ .env ] 파일 생성
4. .env 파일에 아래 정보 삽입
# 운영 디비 접속 정보
# DB_HOST=DB 서버 IP
# DB_PORT=3306
# DB_USERNAME=DB ID
# DB_PASSWORD=DB PASSWORD
# DB_DATABASE=DB 스키마명
# 로컬 개발 접속 정보
DB_HOST=127.0.0.1
DB_PORT=5003
DB_USERNAME=DB ID
DB_PASSWORD=DB PASSWORD
DB_DATABASE=DB 스키마명
5..database.module.ts 파일을 생성한다.
config(); 를 수행해줘야지, .env 설정 파일을 불러 올 수 있다.
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { config } from 'dotenv';
config();
@Module({
imports: [
TypeOrmModule.forRootAsync({
useFactory: () => ({
type: 'mysql',
host: process.env.DB_HOST,
port: Number(process.env.DB_PORT),
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
synchronize: false,
logging: true,
dropSchema: false,
// entities: [ entities 추가 ],
}),
}),
],
})
export class DatabaseModule {}
6. app.module.ts
위에서 생성한 imports에 DatabaseModule 을 추가해준다.
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { DatabaseModule } from './database/database.module';
@Module({
imports: [
DatabaseModule
],
controllers: [AppController],
providers: [
AppService
],
})
export class AppModule {}
7. 이제 프로젝트 경로에 가서
npm run start:dev
실행하면, 아래와 같이 당연히 연결이 안된다고 나온다.
이제 AWS DB 서버로 접속하기 위해서 터널링을 할 차례다. (꼼수)
8. MobaXterm 을 설치한다.
https://mobaxterm.mobatek.net/download.html
9. 상단 메뉴에 Turnneling 버튼을 누른다.
10. 하단에 New SSH tunnel 버튼을 누른다.
11.
11-1) Forwarded port : 5003
내 PC에서 접속할 접속 Port 이다.
11-2) SSH server : AWS 베스천 서버 ip
SSH login : 베스천 서버 ID
SSH port : 22
11-3) Remote server : db가 설치된 서버 ip (비공개 서버)
Remote port : 3306 (mysql 서버 port)
설정 후 하단 Save
12. 추가된 항목에 열쇠 모양을 눌러서 pem 파일을 선택해서 등록한다.
13. 이제 시작 버튼을 누른 후, 정지 버튼이 계속 활성화 되어 있으면 성공.
이제 내 PC에서 5003 Port 를 경유하여, 디비 서버에 있는 Mysql 3306 Port로 접속이 가능하게 되었다.
14. 이제 서버를 다시 시작하면 접속이 될 것이다.
npm run start:dev
'Programming > Node.js' 카테고리의 다른 글
[NestJS] Handlebars template in hbs(Handlebars) (0) | 2024.11.26 |
---|---|
[NestJS] Table leftJoin with Mysql2 (0) | 2024.11.24 |
[MongoDB] 랜섬웨어 (READ__ME_TO_RECOVER_YOUR_DATA) (0) | 2024.04.06 |
[Node.js/mongoose DB] cascade delete 기능 구현하기 (0) | 2021.12.10 |
[Node.js/AdminBro] Admin Page panel + MongoDB (0) | 2021.10.27 |