WEB/🌳 Node.js

[Node.js] 10. MySQL 연동

무딘붓 2022. 8. 5. 19:27

 

생활코딩 Node.js - MySQL 강의를 듣고 공부한 내용을 정리한 게시글입니다. 


mysql 모듈 설치

 

npm install -S mysql

-S는 --save로 바꿔 써도 된다. 이것은 package.json "dependencies" 부분에 설치된 모듈을 기록한다.

다만, npm 5버전 이후부터는 -S 없이 npm install만 적어도 "dependencies"에 추가가 된다.


mysql 모듈 사용법

 

var mysql = require('mysql2');  // mysql 모듈을 불러온다.

// createConnection 메소드의 인자로 전달되는 객체에 자신의 데이터베이스 정보(유저명과 패스워드 등)를 입력
var connection = mysql.createConnection({
  host     : 'localhost',   // host : DB서버의 위치 (ex : localhost) 
  user     : 'me',          // mysql 계정의 user 이름 (ex. root)
  password : 'secret',      // user의 비밀번호
  database : 'my_db'        // 사용할 데이터베이스 이름
});

connection.connect();   // connection 객체의 connect 이라는 메소드 호출 = mysql 연결 시도

// 사용할 SQL문과 콜백함수를 인자로 사용
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
    if (error) throw error;
    console.log('The solution is: ', results[0].solution);
});

connection.end();   // mysql 연결 해제

위 코드는 아래 링크에서 참고하였다.

https://www.npmjs.com/package/mysql#introduction

 

mysql

A node.js driver for mysql. It is written in JavaScript, does not require compiling, and is 100% MIT licensed.. Latest version: 2.18.1, last published: 3 years ago. Start using mysql in your project by running `npm i mysql`. There are 6756 other projects i

www.npmjs.com

만약 위의 코드를 사용했을때 "ER_NOT_SUPPORTED_AUTH_MODE" 오류가 난다면 아래 링크 참조

https://sirius7.tistory.com/52

 

[Node.js] MySQL 연결시 ER_NOT_SUPPORTED_AUTH_MODE 에러 원인과 해결법

1. 문제 상황 Node.js와 MySQL을 연동하려고 했더니 위와 같은 에러가 나오면서 작동하지 않았다. 2. 문제 원인 sqlMessage: 'Client does not support authentication protocol requested by server; consider u..

sirius7.tistory.com


CRUD 예시

//Create
connection.query(`INSERT INTO topic (title, description) VALUES(?,?)`, [post.title, post.description], function (error, result) {
    /* code */
});

//Read
connection.query('SELECT * FROM topic', function (error, topics) {
    /* code */
});

//Update
connection.query(`UPDATE topic SET title=?, description=?`, [post.title, post.description], function (error, result) {
    /* code */
});

//Delete
connection.query(`DELETE FROM topic WHERE id=?`, [post.id], function (error, result) {
    /* code */
});

SQL문을 원하는 내용에 맞춰서 잘 사용해주면 된다.

여기서 중요한 점 중 하나는 SQL injection을 막기 위해 SQL문에 ? 문자를 placeholder를 사용한 것이다.