네이버 클라우드 DB 서버 설치하고 외부 연동하기

네이버 클라우드 DB 서버 설치하고 외부 연동하기

네이버 클라우드 플랫폼(NCP)을 이용하면 직접 가상 서버(인스턴스)를 생성하여 원하는 데이터베이스(DB)를 설치하고 외부 시스템과 연동할 수 있습니다. 예를 들어 웹사이트, ERP, 분석 툴 등에서 사용하는 데이터베이스를 클라우드 상에서 관리함으로써 성능과 보안, 확장성까지 확보할 수 있습니다. 이번 글에서는 네이버 클라우드 DB 서버 설치하고 외부 연동하기 과정을 단계별로 자세히 설명합니다.


DB 서버 설치 전 준비 사항

DB 서버를 설치하기 위해 먼저 다음과 같은 준비가 필요합니다.

  1. 네이버 클라우드 계정 및 결제 수단 등록
    • https://www.ncloud.com 에서 회원가입 후, 콘솔에 로그인합니다.
    • 결제 수단(카드) 등록이 되어 있어야 인스턴스 및 DB 설치가 가능합니다.
  2. 인스턴스 생성
    • Compute > Server 메뉴에서 인스턴스를 생성합니다.
    • Ubuntu 또는 CentOS 운영체제를 추천하며, 최소 사양은 2vCPU, 4GB RAM 이상을 권장합니다.
  3. 공인 IP 및 방화벽 설정
    • 외부 연동을 위해서는 공인 IP가 할당되어 있어야 하며, 방화벽(Access Control Group)에서 DB 포트를 열어주어야 합니다.
  4. SSH 키페어 생성 및 접속 준비
    • 인스턴스 생성 시 키페어를 함께 생성하고 PEM 키를 안전하게 보관합니다.
    • SSH를 통해 서버에 접속해 설치 작업을 진행합니다.

이 단계까지 완료되면 본격적으로 네이버 클라우드 DB 서버 설치하고 외부 연동하기를 위한 본 작업을 시작할 수 있습니다.


DB 서버 설치 (MySQL 예시)

이번 예시에서는 가장 널리 사용되는 오픈소스 DB인 MySQL을 기준으로 설치 과정을 설명합니다. Ubuntu 서버 기준입니다.

  1. 패키지 업데이트 sudo apt update && sudo apt upgrade -y
  2. MySQL 서버 설치 sudo apt install mysql-server -y
  3. MySQL 보안 설정sudo mysql_secure_installation
    • root 비밀번호 설정
    • 익명 사용자 제거
    • 원격 루트 로그인 차단 (나중에 변경 가능)
    • 테스트 DB 제거
  4. 서비스 확인 및 부팅 시 자동 시작 설정 sudo systemctl status mysql sudo systemctl enable mysql

설치가 완료되면 mysql -u root -p 명령어로 DB에 접속할 수 있습니다. 이제 외부 연동을 위한 설정을 추가로 진행해야 합니다.


외부 접속을 위한 MySQL 설정

기본 설정 상태에서는 외부에서 MySQL DB에 접근할 수 없습니다. 외부 연동을 위해 다음 설정을 적용해야 합니다.

  1. MySQL 설정 파일 수정sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    • bind-address = 127.0.0.1bind-address = 0.0.0.0 으로 변경
    • 모든 IP에서 접근 가능하게 설정 (보안상 특정 IP로 제한하는 것이 바람직)
  2. 방화벽 설정 (Access Control Group)
    • 콘솔에서 해당 인스턴스의 방화벽 규칙에 들어가 3306번 포트(MySQL 기본 포트)를 허용 IP 또는 전체 0.0.0.0/0으로 열어야 합니다.
  3. MySQL 사용자 외부 접속 권한 부여 CREATE USER 'youruser'@'%' IDENTIFIED BY 'yourpassword'; GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
  4. MySQL 재시작 sudo systemctl restart mysql

이제 외부 컴퓨터에서 Workbench, DBeaver, 또는 애플리케이션에서 해당 DB 서버의 공인 IP포트 3306을 통해 접속이 가능합니다. 이 설정이 완료되면 네이버 클라우드 DB 서버 설치하고 외부 연동하기가 완료된 것입니다.


활용 예시: 웹 애플리케이션과의 연동

설치한 DB 서버는 다양한 애플리케이션과 연동될 수 있습니다. 예를 들어, Node.js 기반의 웹 서버에서 MySQL을 사용하는 경우, 다음과 같은 코드로 연결할 수 있습니다.

const mysql = require('mysql');
const db = mysql.createConnection({
  host: '서버공인IP',
  user: 'youruser',
  password: 'yourpassword',
  database: 'yourdb'
});
db.connect((err) => {
  if (err) throw err;
  console.log('Connected to MySQL DB!');
});

이렇게 설정하면 클라우드에 구축한 DB 서버를 외부 애플리케이션에서 직접 호출할 수 있습니다. 단, 접속 IP 제한 및 보안 정책을 강화하여 무차별 접속을 막아야 하며, SSL 연결 설정도 권장됩니다.


Q&A

Q. DB 서버를 직접 설치하지 않고도 사용할 수 있는 방법은 없나요?

있습니다. 네이버 클라우드에서는 직접 OS 위에 DB를 설치하지 않고도, **Managed DB 서비스(RDS)**를 제공합니다. 이를 이용하면 복잡한 설치나 보안 설정 없이 클릭 몇 번으로 MySQL, PostgreSQL, MSSQL 등의 데이터베이스를 사용할 수 있습니다. RDS는 자동 백업, 스냅샷, 장애 복구 등의 기능도 기본으로 제공되어 운영 부담이 줄어듭니다. 하지만 비용이 자체 설치보다 높을 수 있으므로, 예산과 관리 편의성 중 어느 쪽을 우선시하느냐에 따라 선택하면 됩니다.


Q. 외부 접속을 허용하면 보안에 문제가 생기지 않나요?

외부 접속을 허용하면 분명히 보안 이슈가 발생할 수 있습니다. 기본적으로는 외부에서 DB에 접속할 수 없도록 설정하는 것이 원칙입니다. 외부 접속이 꼭 필요할 경우에는 다음과 같은 보안 대책을 병행해야 합니다:

  • 방화벽에서 특정 IP만 포트 3306 접근 허용
  • 강력한 비밀번호 정책 적용
  • SSL 기반 접속 구성
  • Fail2Ban 또는 UFW 같은 침입 방지 시스템 설정
  • MySQL root 계정의 원격 접속 차단

이 외에도, 정기적인 로그 점검과 보안 패치 적용을 통해 공격을 방지할 수 있습니다. 가능하다면 SSH 터널링을 통해 DB에 간접적으로 접속하거나, VPN을 활용하는 것도 안전한 방법입니다.


Q. 외부 애플리케이션에서 DB 접속이 안 될 때는 어떻게 해결하나요?

외부 접속 오류가 발생할 때는 다음 사항을 차례대로 점검하세요.

  1. 3306 포트 개방 여부 확인
    • Access Control Group에서 인바운드 규칙에 3306번 포트가 열려 있어야 합니다.
  2. MySQL bind-address 확인
    • /etc/mysql/mysql.conf.d/mysqld.cnf에서 bind-address가 0.0.0.0으로 설정되어 있는지 확인
  3. MySQL 사용자 권한 확인
    • 외부 IP(%)에서 접속 가능한 사용자 권한이 제대로 부여되었는지 확인
  4. 서버 방화벽 또는 UFW 설정 확인
    • 서버 내부 방화벽(UFW 등)이 포트 3306을 차단하고 있지 않은지 확인
  5. 접속 IP 확인
    • 클라이언트 측 IP가 방화벽 허용 범위에 포함되어 있는지 확인

위 단계를 점검해도 해결되지 않는 경우, 서버의 MySQL 로그(/var/log/mysql/error.log)를 참고해 보다 상세한 원인을 파악할 수 있습니다.