본문 바로가기
backend/Nodejs

[NodeJS] - 외부(서버) MySQL 접근

by seongju.lee 2021. 3. 31.

 

외부 PC에서 서버내에 있는 MySQL에 접근하여 쿼리를 전달하는 방법이다.

 

 

우선, 선행 되어야 하는 것이 두 가지 있다.

  1. 우선 서버에서 MySQL에 포트포워딩이 되어 있어야 한다.
  2. 서버 MySQL 사용자 중 외부접근을 허용하는 사용자가 등록되어야 함.

      1. 아래 링크는 우분투에서 포트포워딩 하는 명령어이다.

      https://lsj31404.tistory.com/13?category=852242

 

방화벽, 포트

설치 $ sudo apt update && sudo apt install firewalld -y 버전확인 $ sudo firewall-cmd --version 방화벽의 모든 상태(포트 포워딩, 열린 포트 등)를 확인한다. firewall-cmd --list-all 포트 오픈 방화벽의 pu..

lsj31404.tistory.com

      2. 서버가 우분투라면, 우분투 MySQL에서 외부 접근을 허용하는 방법은 아래 포스팅과 같음.

      https://lsj31404.tistory.com/15?category=852241

 

리눅스 - MySQL 명령어 모음

우분투 환경, MySQL에서 기본적으로 많이 사용하는 명령어를 정리. 우선, MySQL을 설치한 홈 디렉토리로 이동. 1. mysql 실행. ~$ mysql 2. DB목록 확인. show databases; 3. 사용자 목록 확인. - 2번 결과에서 my..

lsj31404.tistory.com

 

 

아래부터 NodeJS를 이용하여 외부에 있는 MySQL에 접근하는 방법.

 

 

1. js파일 생성.

 

 

2. mysql 모듈 생성.

var mysql = require('mysql');

3. DB 연결.

var connection = mysql.createConnection({
    host: '접근할 서버의 IP',
    port: '서버 포트',
    user: '외부 접근 허용한 user 이름',
    password: '유저 비밀번호',
    database: '접근할 DB'
})

4. DB 연결 확인, 확인 되면 "Database is connected!" 출력

   아니면 에러 발생.

connection.connect(function(err){
    if(!err) {
        console.log("Database is connected!");
    } else {
        console.log("Error connecting database...nn :" + err);
    }

})
  • 주의사항: 4번까지 입력 후, 아래와 같은 에러 발생한 경우.

 

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

  • 1번에서 진행한 mysql모듈 설치를 mysql2라고 변경하면 해결된다.