[MariaDB]Node.js mysql vs mysql2 차이점 정리 (사용 가능 여부 포함)

2026. 3. 11. 15:46·Database
반응형

Node.js에서 MySQL 계열 데이터베이스를 사용할 때 자주 사용하는 패키지가 **mysql**과 **mysql2**입니다.
둘은 이름이 비슷하지만 기능과 사용 방식에서 몇 가지 중요한 차이가 있습니다.

이번 글에서는 다음 내용을 정리합니다.

  • mysql vs mysql2 차이점
  • 어떤 경우에 mysql2를 사용하는 것이 좋은지
  • mysql2를 MariaDB에서 사용할 수 있는지

1. mysql vs mysql2 기본 개념

항목mysqlmysql2
패키지 mysqljs/mysql sidorares/mysql2
개발 시기 오래된 Node MySQL 드라이버 mysql의 개선 버전
Promise 지원 ❌ 기본 지원 없음 ✅ Promise API 지원
Prepared Statement ❌ 제한적 ✅ 기본 지원
성능 보통 더 빠른 편
유지보수 유지중 활발

핵심은 mysql2가 mysql의 개선 버전이라는 점입니다.

또한 API 호환성을 유지하면서 기능을 확장했습니다.

그래서 기존 코드에서 비교적 쉽게 변경할 수 있습니다.


2. mysql 특징

mysql은 Node.js에서 오래 사용된 MySQL 드라이버입니다.

특징

  • 콜백 기반 API
  • 안정적이지만 최신 기능 부족
  • Promise를 직접 래핑해야 함

예제 코드

 
const mysql = require('mysql');

const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'test'
});

connection.query('SELECT * FROM users', (err, results) => {
if (err) throw err;
console.log(results);
});
 

3. mysql2 특징

mysql2는 mysql과 대부분의 API가 호환되면서 추가 기능을 제공합니다.

주요 장점

  • Promise API 지원
  • async/await 사용 가능
  • Prepared Statement 지원
  • 더 나은 성능
  • TypeScript 지원

예제 코드 (Promise 사용)

 
const mysql = require('mysql2/promise');

async function main() {
const connection = await mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'test'
});

const [rows] = await connection.execute(
'SELECT * FROM users WHERE id = ?',
[1]
);

console.log(rows);
}

main();
 

async/await 기반 코드 작성이 가능하기 때문에 최근 프로젝트에서는 mysql2가 더 많이 사용됩니다.


4. mysql2를 MariaDB에서 사용할 수 있을까?

결론부터 말하면 사용 가능합니다.

이유는 다음과 같습니다.

  • MariaDB는 MySQL 프로토콜과 호환
  • mysql / mysql2 드라이버는 MySQL 프로토콜 기반

따라서 일반적인 CRUD 작업에서는 문제없이 동작합니다.


5. MariaDB에서 권장되는 Node.js 드라이버

MariaDB 공식 문서에서는 MariaDB 전용 드라이버를 제공합니다.

추천 패키지

mariadb
 

특징

  • MariaDB 공식 Connector
  • MySQL 및 MariaDB 모두 연결 가능
  • MariaDB 기능 최적화

예제

 
const mariadb = require('mariadb');

const pool = mariadb.createPool({
host: 'localhost',
user: 'root',
password: 'password',
database: 'test'
});

async function main() {
const conn = await pool.getConnection();
const rows = await conn.query('SELECT * FROM users');
console.log(rows);
}
 

6. 어떤 드라이버를 선택해야 할까?

추천 기준은 다음과 같습니다.

MySQL 사용

추천

mysql2
 

이유

  • Promise 지원
  • 성능 개선
  • 커뮤니티 사용량 많음

MariaDB 사용

추천

mariadb
 

이유

  • 공식 커넥터
  • MariaDB 기능 완전 지원

기존 프로젝트 유지보수

이미 mysql을 사용하고 있다면

  • 급하게 변경할 필요는 없음
  • 새 프로젝트라면 mysql2 추천

7. 정리

  • mysql2는 mysql의 업그레이드 버전
  • Promise 기반 개발을 위해 mysql2 사용이 일반적
  • mysql2는 MariaDB에서도 사용 가능
  • 하지만 MariaDB에서는 mariadb 공식 드라이버가 더 권장됨
반응형
저작자표시 비영리 (새창열림)

'Database' 카테고리의 다른 글

[DBeaver]Excel Export  (0) 2026.02.23
[MYSQL]몇 년치 날짜데이터 테이블 만들기  (0) 2024.05.29
[MYSQL]특정 범위에 없는 날짜 데이터 만들기  (0) 2024.05.29
[MSSQL]매월 3째주 금요일 구하기(쿼리검증필요/주차관련)  (0) 2024.04.09
Elastic Search  (0) 2024.02.15
'Database' 카테고리의 다른 글
  • [DBeaver]Excel Export
  • [MYSQL]몇 년치 날짜데이터 테이블 만들기
  • [MYSQL]특정 범위에 없는 날짜 데이터 만들기
  • [MSSQL]매월 3째주 금요일 구하기(쿼리검증필요/주차관련)
애플자라
애플자라
    반응형
  • 애플자라
    애플자라
    애플자라
  • 전체
    오늘
    어제
    • 분류 전체보기 (676)
      • 업무효율화★ (7)
      • Linux (93)
      • Programing (97)
      • Flex, Laszlo (15)
      • Database (170)
      • Network (18)
      • Data (14)
      • Tips (122)
      • 여행★ (1)
      • Board (116)
      • 맛집탐방 (3)
      • 아이원츄 (12)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • Love&Smile
    • Husk's repository
    • StartUp
    • DSDSTUDIO Experimentals
    • 신선
    • DEV.SEULKI.KR[이슬기]
    • Live Bit Block
  • 공지사항

  • 인기 글

  • 태그

    리눅스
    Toad
    MySQL
    java
    tomcat
    eclipse
    데이터
    sql
    DB
    설정
    Oracle
    Excel
    백업
    파일
    윈도우
    Windows
    DATABASE
    Linux
    서버
    IP
    delete
    select
    apache
    table
    엑셀
    server
    날짜
    오라클
    테이블
    mssql
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
애플자라
[MariaDB]Node.js mysql vs mysql2 차이점 정리 (사용 가능 여부 포함)
상단으로

티스토리툴바