봄날은 갔다. 이제 그 정신으로 공부하자

node.js로 웹서비스 만들기 (19. DB 생성, 권한 설정, 원격 접속) 본문

학습

node.js로 웹서비스 만들기 (19. DB 생성, 권한 설정, 원격 접속)

길재의 그 정신으로 공부하자 2023. 8. 19. 11:11

이번 글은 프로젝트에 필요한 database과 각 table을 생성하고 원격에서 접근 가능한 권한을 부여하여 원격에서 접속하는 것 까지를 글로 기록하도록 하겠습니다.

 

DB 만들기

데이터베이스> “테이터베이스 만들기버튼 클릭 아래와 같이 기본 정보 입력 만들기버튼을 클릭해 DB 만들어줍니다.

아래 그림을 보면 방금 전 만든 DB가 추가되었음을 확인할 수 있습니다.

 

Cloud Shell을 사용해 Cloud SQL 접속하기

Cloud SQL 인스턴스에 대한 접근은 Cloud Shell을 사용해 접근하도록 하겠습니다.

 

Google Cloud Console 상단 오른쪽에 있는 "Cloud Shell 아이콘"을 클릭합니다.

하단에 아래 그림과 같이 shell이 보여지면 ”gcloud sql connect <인스턴스 ID> --user=root” 입력 후 엔터를 입력합니다.

 

중간에 물어보면 “y” 를 입력하고 비밀번호 입력하면 아래와 같이 접속 완료됩니다.

 

이제 mysql에 들어왔습니다.

 

우선 사용자를 생성한 후 DB를 생성하고 사용자에게 DB 권한을 부여하는 순서로 작업하도록 하겠습니다.

 

유저 생성

로컬 접속과 외부 접속이 가능하도록 아래 명령어를 입력해 사용자를 생성 후 업데이트 합니다.

mysql> create user ‘<사용자 이름>’@‘localhost’ identified by ‘<비밀번호>’;
mysql> create user ‘<사용자 이름>’@‘%’ identified by ‘<비밀번호>’;
mysql> flush privileges;

 

사용자에게 DB 권한 부여

아래 명령어를 사용해 원격에서도 사용자가 DB 접근이 가능하도록 권한을 부여합니다.

mysql> grant all privileges on <DB 이름>.* to <사용자 이름>@'localhost';
mysql> grant all privileges on <DB 이름>.* to <사용자 이름>@'%';
mysql> flush privileges;

 

DBeaver로 사용자 및 원격 접속 확인

DBeaver를 실행해 새로운 데이터 베이스 연결로 위 입력한 사용자와 원격지 접속 설정이 정상적으로 되었는지 확인합니다.

  - server Host: <Cloud SQL 인스턴스 IP 주소>

  - port: 3306

  - database: <DB 이름>

  - username: <사용자 이름>

  - password: <비밀번호>

 

원격지 접속 설정까지 완료되었습니다.

 

프로젝트 DB 정보 변경

프로젝트에서 기존 local db로 접속 설정되어 있는 부분을 cloud sql로 변경하도록 하겠습니다.

config 폴더의 db.js 파일의 dbInfo 부분을 아래와 같이 수정합니다.

const mysql = require('mysql');

// 기존 localhost를 바라보던 부분을 주석 처리하고
// const dbInfo = {
//     host: 'localhost',
//     user: 'ulabla',
//     password: '**********',
//     dateStrings:true,
//     database: 'mylocaldb'
// };

// 원격지 DB를 바라보도록 아래와 같이 추가합니다.
const dbInfo = {
    host: '111.222.333.444',
    user: 'USER NAME',
    password: '**********',
    dateStrings:true,
    database: 'CLOUD DB NAME'
};

module.exports = {
    init: function() {
        return mysql.createConnection(dbInfo);
    },
    connect: function(conn) {
        conn.connect(function(err) {
            if(err) console.error('mysql 연결 에러 : ' + err);
            else console.log('mysql 연결 성공');
        });
    }
};

 

이제 내 웹 서비스의 DB가 local DB에서 Cloud SQL의 DB로 변경되었습니다.

Comments