세리프 따라잡기

nodejs에 mysql 연동하기 / 오류 발생 수정 / DB 정보 파일 분리 본문

Node.js

nodejs에 mysql 연동하기 / 오류 발생 수정 / DB 정보 파일 분리

맑은 고딕 2021. 4. 6. 19:22

 

※ 해당 과정에 대한 자세한 내용들은 github에 올려두었습니다😉

 

 

mysql

A node.js driver for mysql. It is written in JavaScript, does not require compiling, and is 100% MIT licensed.

www.npmjs.com

1. 설치

npm install --save mysql ← 코드 입력으로 설치하기
[--save를 쓰는 이유: package.json 파일의 dependencies까지 추가시켜주기 위함]

 

2. 여기에 있는 코드 그대로 붙여넣기 [새로운 파일(mysql.js)을 만들어 붙여넣기함]

var mysql      = require('mysql'); //mysql 모듈을 사용
var connection = mysql.createConnection({
    host     : 'localhost',
    user     : '자신이 쓰는 이름',
    password : '비밀번호 입력',
    database : '사용 할 DB 이름 입력'
}); // 4-6번 코드의 한국어는 설명한 것 각자의 것을 기입할 것.

connection.connect();

connection.query('SELECT * FROM topic', function (error, results, fields) { //sql이 1번째 인자, 2번째가 callback
    if (error) {
        console.log(error);
    }
    console.log(results);
});

connection.end();

이때 제대로 되었다면 콘솔창에 node 새로운 파일(mysql).js를 입력하고 작동해보면 된다. [입력한 DB가 출력된다면 성공적!]

 

※ 오류 발생 수정하기

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client ~블라블라~

위와 같은 오류가 발생했을 경우 다음의 방법을 따라해보자!

 

① MySQL Installer 실행

② Reconfigure 선택

③ Type and Networking 부분은 건들지 않고 next를 누르고, Authentication Method 부분에서 Legacy 부분을 체크하고 next를 누른다.

④ 이후 자신이 설정한 현재 비밀번호를 입력하고 next를 누르며 execute를 하여 설정해주면 끝!

 

* 보통 설치할 때 위의 RECOMMENDED를 사용하는데, 프로젝트를 할 때 인증 방식의 편리함(?)을 위해 레거시를 사용한다고 한다🙃

 

3. DB 정보 파일 분리시키기

SQL을 통해 DB를 만지면 여러 private한 정보가 발생하게 된다. 이때 분리시키지 않고 버전 관리(github)에 옮기면... 😣! 때문에 이를 별도의 파일로 분리시켜 gitignore을 통해 해당 파일을 옮기지 않도록 해야한다. 다음과 같이 하자!

 

① 먼저 파일명(db).js를 생성한다

② 분리할 코드(↓)를 적고 export 하기

var mysql = require('mysql');
var db = mysql.createConnection({
    host     : 'localhost',
    user     : '자신이 쓰는 이름',
    password : '비밀번호 입력',
    database : '사용 할 DB 이름 입력'
}); // 4-6번 코드의 한국어는 설명한 것 각자의 것을 기입할 것.
db.connect();
module.exports = db; // db 객체를 main.js에서 사용할 수 있게 모듈로 export 하기

③ main.js 파일에 export한 모듈 추가하기

var db = require('./lib/db.js'); //db 내용에 정보가 있기 때문에 파일을 분리하고 모듈을 import한 것

④ .gitignore에 제외할 파일명 적기 (필자 기준: lib/db.js)

그리고 커밋과 push를 통해 넣어주면 다음과 같이 제대로 적용된 것을 볼 수 있다!

끝!

 

4. 행의 id값 알아보기

www.npmjs.com/package/mysql#getting-the-id-of-an-inserted-row 삽입된 행에 대한 id를 가져오는 방법

 

Comments