Node.js + Express + TypeScript 게시판 만들기 #5 – MariaDB 연결과 DB 환경설정

Node.js + Express + TypeScript 게시판 만들기 #1 – 개발 환경 구성

Node.js + Express + TypeScript 게시판 만들기 #2 – nodemon 설정과 라우터 분리

Node.js + Express + TypeScript 게시판 만들기 #3 – dotenv 설정과 Controller · Service · Middleware 구조화

Node.js + Express + TypeScript 게시판 만들기 #4 – morgan, helmet, cors로 서버 기본 세팅

이전 글에서:

  • morgan 로그 설정
  • helmet 보안 헤더 적용
  • cors 환경변수 분리

까지 완료했다.

이 글에서는 Mariadb연결, 변수설정, 테스트까지 해보려고 한다.

참고글 :

mariadb 설치

mariadb 계정, DB 생성 & 권한 부여

1. mysql2 설치

> npm install mysql2

Express에서 mariadb를 사용하려면 mysql2 라이브러리가 필요하다.

PORT=3000

2. .env에 DB 정보 추가

작성된 .env를 수정한다

PORT=3000

NODE_ENV=development
CORS_ORIGIN=http://localhost:5173

DB_HOST=localhost
DB_PORT=3306
DB_USER=user1
DB_PASSWORD=user1!
DB_NAME=user1

DB_HOST > DB 서버 주소. 아직 개발 단계로 디비, 백, 프론트 다 같은 주소를 쓴다.

DB_PORT > mysql 기본 포트 3306이다.

DB_USER > DB 계정명

DB_PASSWORD > DB 패스워드

DB_NAME > DB NAME

3. DB 커넥션 풀 생성

src/config/db.ts 생성

import mysql from 'mysql2/promise';

export const pool = mysql.createPool({
    host: process.env.DB_HOST!,
    port: Number(process.env.DB_PORT || 3306),
    user: process.env.DB_USER!,
    password: process.env.DB_PASSWORD!,
    database: process.env.DB_NAME!,
    waitForConnections: true,
    connectionLimit: 10,
    queueLimit: 0,
});

export const pool = mysql.createPool({

커낵션 풀을 생성한다.

host, port, user, password, database에는 환경변수에 작성한 변수명을 기입해주면 된다.

변수명 뒤 ! 는 타입스크립트에게 저 변수는 값이 꼭 있다 라고 알려주는 것이다.

password 앞 Number()는 문자열로 들어오므로 Number로 치환해주는 것이며

|| 3306은 값이 없을 때 3306으로 초기화 해준다.

waitForConnections: true, :

커넥션이 부족하면 기다린다.

connectionLimit: 10, :

동시 최대 10개 연결 허용

queueLimit: 0, :

대기열 제한 없음.

4. DB 연결 테스트 코드 추가

index.ts 수정 dotenv.config(); 아래 추가

...
import { pool } from './config/db';

(async () => {
    try {
        const [rows] = await pool.query('select 1 as ok');
        console.log('DB CON SUCCESS: ', rows);

    } catch (e) {
        console.error('DB CON FAIL: ', e);
    }
})();

방금 생성한 커넥션 풀을 임포트한다.

(async () => { 함수로 서버 시작시 바로 실행되게 한다.

단순 쿼리로 rows 에 {ok : 1} 값이 반환된다.

로그를 확인해보면 잘 연결된 것을 볼 수 있다.

다음 글 예고 – 회원가입 API 구현

댓글 남기기