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연결, 변수설정, 테스트까지 해보려고 한다.
참고글 :
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 구현