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 설정 파일을 커스터마이징할 수 있습니다.
|
| -v mysql-vol:/var/lib/mysql | Docker 볼륨 mysql-vol을 컨테이너의 /var/lib/mysql에 마운트하여 데이터를 지속적으로 보존할 수 있도록 합니다 (데이터 퍼시스턴스).
|
| -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 포워딩 사용
'DevOps' 카테고리의 다른 글
| AWS 대신 맥미니 (2) | 2024.02.08 |
|---|---|
| Artifact, AWS IAM - GitHub Actions 배포 자동화 (2) (0) | 2024.01.02 |
| AWS EC2에 SSH으로 - GitHub Actions 배포 자동화 (1) (3) | 2023.12.29 |
| [AWS] AWS Activate 스타트업 $1350 지원 (0) | 2022.06.18 |
| [AWS] AWS 서버비용 150만원 환불 내용 (0) | 2022.06.11 |