Node

[Node.js] Node.js + MySQL 연동하기

YaluStar 2023. 3. 10. 00:57

안녕하세요.

이번에는 Node.js + MySQL 연동을 해보도록 하겠습니다.

 

먼저 MySQL에서 데이터를 만들어줍니다.

 

1. 테이블 생성

create table user (
	id varchar(10) not null primary key,
	pw varchar(20) not null,
	name varchar(5) not null,
	gender ENUM('F', 'M', '') default '',
	birthday DATE not null,
	age int(3) not null default 0
);

 

2. 데이터 삽입

insert into user values ('hong1234', '8o4bkg', '홍길동', 'M', '1990-01-31', 33);
insert into user values ('sexysung', '87awjkdf', '성춘향', 'F', '1992-03-31', 31);
insert into user values ('power70', 'qxur8sda', '변사또', 'M', '1970-05-02', 53);
insert into user values ('hanjo', 'jk48fn4', '한조', 'M', '1984-10-18', 39);
insert into user values ('widomaker', '38ewifh3', '위도우', 'F', '1976-06-27', 47);
insert into user values ('dvadva', 'k3f3ah', '송하나', 'F', '2001-06-03', 22);
insert into user values ('jungkrat', '4ifha7f', '정크랫', 'M', '1999-11-11', 24);

select * from user;

 

3. MySQL 최종 데이터

 

 

 

4. Node.js 준비

- 먼저 mysql npm을 다운로드 합니다.

npm install mysql

 

그리고 Node.js의 index.js 파일을 다음과 같이 작성합니다.

index.js

const mysql = require('mysql');

// DB에 연결하는 함수
// root 계정은 사용 불가능
// const cnn = mysql.createConnection({
//     host: 'localhost',
//     user: 'root',
//     password: 'admin',
//     database: 'test'
// });

// 새로운 user로 실행
const cnn = mysql.createConnection({
    host: '127.0.0.1',
    user: 'test',
    password: 'qwer1234',
    database: 'test'
});

cnn.query("select * from user", (err, result) => {
    // err 변수에는 query문에서 error이 발생하지 않는 이상 undefined 값이 기본 값이다.
     if (err) console.log(err);

    console.log(result);
});

cnn.query("insert into user values ('kiriko', '79qwsd2', '키리코', 'F', '2022-11-01', 26)", (err, result) => {
     if (err) console.log(err);

     console.log(result);
});

 

- Mac 에서는 localhost 인식을 못하는 Error가 있어서 127.0.0.1을 사용하시면 됩니다.

- MySQL에서는 root 계정으로 접근하는 것을 막아놨기 때문에 다른 계정을 사용해야합니다.

sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client',

MySQL 사용자 추가 방법

 

 

 

5. 연습하기

index.js

const express = require('express');
const mysql = require('mysql');
const app = express();
const port = 8080;

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

app.set('view engine', 'ejs');

app.get('/', (req, res) => {
    cnn.query('select * from user', (err, result) => {
        if (err) throw err;

        console.log(result);
        res.render('index', {rows: result});
    });
});


app.listen(port, () => {
    console.log('server open : ', port);
});

 

/views/index.ejs

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div>
        <% for(let i = 0; i < rows.length; i++) { %>
            <div>
                <span><%= rows[i].id %></span><span> <%= rows[i].name %></span>
            </div>
        <% } %>
    </div>
</body>
</html>

 

index.js 파일과 index.ejs 파일을 작성 후에

localhost:8080 으로 접속하면 아래와 같은 결과가 나옵니다.

 

콘솔 결과 - html

 

이상으로 Node.js + MySQL 연동하는 방법에 대해서 알아보았습니다.

감사합니다.

 

반응형