개인 공부/연결, 설치

[node] MySQL 연결 방법

육츠 2024. 11. 10. 20:49

1. mysql2 설치

npm install mysql2

 

pakage.json 안에 dependencies 안에 mysql2 가 추가된다.2

 

2. mysql 데이터 베이스, 테이블 만들어 두기

그래야 연결할 테이블을 정할 수 있고, 정보가 잘 들어오나 확인 할 수 있다.

 

3. index.js : 가장 기본 버전 (연결만 확인하기 용이하다)

server 의 가장 상위에 .env 를 만들어 보안을 강화하였다. 

import express from 'express';
import dotenv from 'dotenv';
import mysql from 'mysql2';

dotenv.config();

const app = express();
const port = process.env.PORT;

app.set(port || 4000);

const connection = mysql.createConnection({
    host : 'localhost',
    user : 'root',
    password : process.env.MYSQL_PW,
    database : '[db]',
});

connection.connect ((err) => {
    if(err){
        console.error('Failed to connection', err);
    } else {
        console.log ('Successfully connected mysql');
    }
})

connection.query ('SELECT * FROM [db table]', (error, rows, fields) => {
    console.log (rows);
});

connection.end();

 

3-2. index.js : promise 로 연결 래핑

const connectToDB = () => {
    return new Promise((resolve, reject) =>{
        connection.connect ((err) => {
            if(err){
                reject('Failed to connect to MySQL: ' + err);
            } else {
                resolve('Successfully connected to MySQL');
            }
        });
    });
};

const fetchData = async() => {
    try{
        const message = await connectToDB();
        console.log(message);

        const [rows, feilds] = await connection.promise().query('SELECT * FROM [db]');
        console.log(rows);

    } catch(err) {
        console.error('Error:', err);
    } finally{
        connection.end(); //연결종료
    }
};

fetchData();

 

console 결과 (두 버전 다 동일하다)

 

 


mysql 대신 mysql2 를 설치한 이유

mysql2 패키지는 mysql 패키지를 개선한 버전으로, 더 나은 성능과 Promise 기반의 API를 제공하는 MySQL 클라이언트이다.

mysql 과 mysql2 의 큰 차이는 Promise 지원이다. Promise를 사용하면 async/await 구문을 사용하여 비동기 코드의 가독성을 높이고 오류를 처리하기 더 쉬워지도록 도와준다. 또한 Mysql은 새로운 MySQL 기능이나 최신 표준을 지원하지 않는 경우가 있을 수 있으며, mysql2는 버전 8.0 이상과 잘 맞는다고 한다.

때문에 효율적인 Mysql 사용을 위해 mysql2 의 노드 패키지를 설치하였다. 

 

참고: gpt, meek.log

 

mysql vs mysql2

최근 MySQL과 MySQL2의 다운로드 추이를 비교하고, 새로운 기술 동향에 대한 궁금증을 해소하기 위해 관련 정보를 정리하고 공유하고자 글을 작성해보았습니다.✨

velog.io