009 - DB 연동
남기용 156

DB 계정과 스키마 생성

express 서버를 만들기 전에 먼저 root 권한으로 DB를 접속해서 하는것은 바람직 하지 않기 때문에 사용할 스키마에만 사용가능한 사용자 계정과 스키마를 만들겠습니다.

MySQL 워크벤치에서 root 계정으로 접속하여 사용자 계정과 사용할 DATABASE를 생성하고 권한을 부여합니다.

사용자 생성시 % 는 모든곳에서 접속하는 의미이고 localhost 로 설정하면 로컬에서만 접속되며,
이 부분에 IP를 지정하여 특정 IP에서만 접속하게 할 수 있습니다.

CREATE USER '사용자ID'@'%' IDENTIFIED BY '비밀번호';
DROP USER '사용자ID'@'%';

CREATE DATABASE 디비명 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

다른 사용자에게 권한을 부여할 수 있는 권한 까지 부여하려면 WITH GRANT OPTION 을 추가합니다.

GRANT ALL PRIVILEGES ON 디비명.테이블 TO '사용자ID'@'%' WITH GRANT OPTION;
REVOKE ALL ON 디비명.* FROM '사용자ID'@'%';

사용자 계정에 대한 변경이 있으면 다음 명령으로 적용하여야 합니다.

FLUSH PRIVILEGES;

이렇게 한 후 이것도 워크벤치에서 접속할 수 있도록 홈화면에 접속을 만듭니다.

Express 서버에 mysql연결

mysql 연결 모듈인 mysql2를 설치 합니다

yarn add mysql2

.env 파일에 MySQL 접속정보를 작성합니다.

DB_HOST=주소
DB_USER=사용자ID
DB_DATABASE=데이터베이스
DB_PASSWORD=비밀번호

server 폴더안에 plugins 폴더를 하나 만들어주고 mysql.js 파일을 만듭니다.

plugins 폴더는 앞으로 사용하면서 필요한 모듈들을 이곳에서 관리 하도록 하겠습니다.

require('dotenv').config();
const mysql = require("mysql2");

function createDatabase() {
	let instance = null;
	return {
		getinstance: function () {
			if (instance == null) {
				const config = {
					host: process.env.DB_HOST,
					user: process.env.DB_USER,
					password: process.env.DB_PASSWORD,
					database: process.env.DB_DATABASE,
				};
				const pool = mysql.createPool(config);
				instance = pool.promise();
			} 
			return instance;
		}
	}
}

module.exports = createDatabase().getinstance();
회원로그인 후 댓글을 작성하실 수 있습니다. 로그인
© 2021 ezcode all right reserved.