본문 바로가기
DevOps

NCP - MySQL, Docker

by 인용 2025. 6. 20.

1.  NCP 서버 Ubuntu 설정 (=EC2)

vpc 설정

Private IP 대역

외부 인터넷과 직접 통신하지 않는 내부 네트워크 전용 IP 범위

더보기

대역범위 설명

10.0.0.0/8 10.0.0.0 ~ 10.255.255.255 대규모 기업, ISP 등
172.16.0.0/12 172.16.0.0 ~ 172.31.255.255 중간 규모 네트워크
192.168.0.0/16 192.168.0.0 ~ 192.168.255.255 가정, 소규모 사무실 등

 

/숫자 IP를 나누는 기준이에요.

숫자가 작을수록 → 더 많은 IP 포함,

숫자가 클수록 → 더 좁은 네트워크예요.

서브넷호스트 수 (사용 가능 IP 수)

/16 약 65,534개 IP
/24 254개 IP (가장 흔함)
/28 14개 IP (매우 좁은 범위)
  • 반드시 내부 네트워크용 IP 대역만 사용해야 하고, 네트워크 크기도 너무 크거나 너무 작지 않도록 /16 ~ /28 사이에서 적절하게 설정해야 한다는 뜻

 

ssh로 접속 

ssh root@211.188.53.168 -p 22

 

Server 비밀번호 변경

passwd

 

 

2. 도커설치

Docker 설치가이드

https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository

https://lachlandeer.github.io/installation-guide/docker/

패키지 (설치 프로그램) 목록 갱신

sudo apt-get update

 

도커 설치를 위한 패키지 설치 (총 4개 설치)

sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

 

GPG키 추가하기

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

 

도커 패키지 다운로드 받을 레파지토리 등록

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

후에 엔터

 

패키지 목록 갱신

sudo apt-get update

 

추가된 레파지토리 확인 

apt-cache policy docker-ce

 

최신 버전 도커 설치

sudo apt-get -y install docker-ce

 

도커 버전 확인

docker -v

 

sudo 없이 도커 사용을 위해 도커 그룹에 현재 사용자 추가

sudo usermod -aG docker $(whoami)

sudo systemctl restart docker

 

* usermod : 사용자 정보를 수정해주는 명령어 usermod [옵션] 그룹명 사용자명 - 해당 사용자에게 해당 그룹을 부여

* systemctl : 다양한 서비스들을 관리 및 제어하는 명령어 systemctl [명령] 서비스명 - 해당 서비스에 해당 명령을 실행

 

 

3. Docker - Mysql 설치

 

mysql 강의 부분 부터 아래 시작 ( 57 : 20)

 

https://hub.docker.com/_/mysql

 

Docker를 사용해 MySQL 8.0 컨테이너를 백그라운드에서 실행하는 명령

docker run -d --name mysql-container \
  -p 3306:3306 \
  -v ~/mysql:/etc/mysql/conf.d \
  -v mysql-vol:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=1234 \
  -e TZ=Asia/Seoul \
  mysql:8.0

 

옵션설명

-d 컨테이너를 백그라운드(Detached) 모드로 실행합니다.
--name mysql-container 컨테이너 이름을 mysql-container로 지정합니다.
-p 3306:3306 호스트의 3306 포트를 컨테이너의 3306 포트에 포워딩합니다. MySQL 기본 포트입니다.
-v ~/mysql:/etc/mysql/conf.d 호스트의 ~/mysql 디렉토리를 컨테이너의 /etc/mysql/conf.d에 마운트하여, MySQL 설정 파일을 커스터마이징할 수 있습니다.
  • mkdir mysql 을 사용하여 미리 만들어도 되고, 없으면 만들어 줌.
-v mysql-vol:/var/lib/mysql Docker 볼륨 mysql-vol을 컨테이너의 /var/lib/mysql에 마운트하여 데이터를 지속적으로 보존할 수 있도록 합니다 (데이터 퍼시스턴스).
  • docker volume create mysql-vol동등한 작업을 자동으로 수행
-e MYSQL_ROOT_PASSWORD=1234 MySQL의 루트 계정 비밀번호를 1234로 설정합니다.
-e TZ=Asia/Seoul 컨테이너의 타임존을 Asia/Seoul로 설정하여 시간이 맞지 않는 문제를 방지합니다.
mysql:8.0 사용할 Docker 이미지로 MySQL 8.0 버전을 지정합니다.

-e : 환경 변수 설정

-v : 호스트와 컨테이너 간 폴더 연결 (볼륨)

-p : 포트 연결 (호스트:컨테이너)

 

도커 확인

docker ps -a

 

컨테이너 입장

docker exec -it mysql-container bash

 

mysql 입장

mysql -u root -p

비번 1234

 

상태 확인

status  

latin1 -> utf8mb4
으로 변경해야함

 

utf8mb4 설정 (안될 수 있어서 해주는거)

exit 두번하여 ncp 서버로 나옴 (container -> docker -> ncp)

 

mkdir mysql (폴더 생성)

 

my.cnf (파일 생성 vi, nano 명령어 사용)

[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqldump]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'
skip-character-set-client-handshake

 

 

반영하기 위해 재실행

docker container restart mysql-container

 

컨테이너 입장

docker exec -it mysql-container bash

 

mysql 입장

mysql -u root -p

비번 1234

 

 

외부에서 mysql 접근 가능한 계정 생성

CREATE USER 'yesul'@'%' IDENTIFIED BY 'yesul';

 

모든 권한 적용

GRANT ALL PRIVILEGES ON *.* TO 'yesul'@'%';

 

외부 접속가능, NCP 인바운드 3306 허용

 

 

지금은 프로젝트이기 때문에 오픈하고 사용을 한거지만

현재 상태면 인터넷 어디서든 비밀번호만 알면 접속 가능하므로, 보안상 매우 위험합니다.

 

 

 특정 서버에서만 접속 가능하게 하려면?

CREATE USER 'yesul'@'특정서버IP' IDENTIFIED BY 'yesul';
GRANT ALL PRIVILEGES ON *.* TO 'yesul'@'특정서버IP';

 

  • 인바운드 규칙에서 3306 포트를 0.0.0.0/0 대신, 허용할 서버의 IP만 등록
    3306 포트: 허용 IP 123.123.123.123/32 (특정 서버)

CIDR 표기허용 범위 설명

0.0.0.0/0 모든 IP 허용 (매우 위험)
123.123.123.0/24 123.123.123.1 ~ 123.123.123.254 전체 허용
123.123.123.123/32 딱 하나, 123.123.123.123만 허용

 

-> MySQL 서버는 외부 포트 닫고, 내부망이나 SSH 포워딩 사용

728x90