공부/Linux

(OCI) 오라클 클라우드 이용하여 MariaDB 설치 하기

미친사람 2026. 1. 6. 09:48
반응형

오라클 클라우드 가입 후

목표: 인스턴스를 생성 후 MariaDB 설치 및 DB 서버 운영


인스턴스 생성

인스턴스 정보

- 이름: db-server

- 이미지: Ubuntu 22.04 LTS

- 구성: Ampere, OCPU 1, RAM 6GB

 

보안

- 실드된 인스턴스 체크 해제

 

네트워킹

- 만들어둔 VCN 사용 (VCN = 방화벽 규칙이라고 생각하면 됨, 생성은 VCN 생성 마법사로 간단하게 생성, 생성 후 규칙에 원하는 포트를 열어주자 [예시. 3306])

- 자동 생성 SSH 키 쌍 생성 , 퍼블릭 키 붙여넣기를 통해 진행 (키 파일은 접속할 때 필요하며 꼭 가지고 있어야 함)

스토리지

- 변경사항 없이 기본 설정 값으로 진행


SSH 접속

보통 Putty를 많이 사용하는데, 나는 MobaXterm 기준으로 설명

 

Session 버튼 누른 후 SSH 클릭

Remote host: 생성한 인스턴스의 퍼블릭 IP 주소

Specify username: 생성한 인스턴스의 사용자 이름 (해당 란을 비워둘 경우 접속 후 아이디 입력)

 

Advanced SSH settings 탭을 클릭

Use private key 체크 후 인스턴스 생성 시 받았던 .key 파일을 등록 후 OK 버튼을 누른다.

 

그 후에 이 접속에 대해 신뢰하겠냐는 팝업창이 뜨는데 Accept 눌러주면 된다.


SSH 접속 후 기본 설정

패키지 업그레이드

sudo apt update && sudo apt upgrade -y

 

설치 중 배경이 바뀌며 무엇을 재시작 할거냐는 선택지가 뜨는데 스페이스바로 전체 선택 후 엔터를 눌러 재시작 할 수 있다.

또는 그냥 엔터를 누르고 reboot 명령어로 서버를 재시작해도 된다.

 

타임존 설정

sudo timedatectl set-timezone Asia/Seoul

MariaDB 설치 및 설정

MariaDB 설치 (현재 리눅스 버전에서 안정화 된 버전 중 최신으로 설치)

sudo apt install mariadb-server -y

 

서비스 상태 확인

sudo systemctl status mariadb

 

MariaDB 보안 초기화 (필수)

sudo mysql_secure_installation

권장 선택 값

- root 비밀번호 설정: Y
- 익명 사용자 제거: Y
- 원격 root 로그인 차단: Y
- test DB 삭제: Y
- 권한 테이블 다시 로드: Y

 

외부 접속 설정 (bind-address 수정)

sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

bind-address = 0.0.0.0 로 변경

 

MariaDB 재시작

sudo systemctl restart mariadb

 

(선택) 대소문자 구분 설정
DB 생성 후에는 변경을 하기에는 복잡하니, 필요하다면 꼭 생성 전 설정해 주도록 하자

MariaDB 중지

sudo systemctl stop mariadb


설정 파일 수정

sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf


[mysqld] 섹션에 추가

[mysqld]
lower_case_table_names=1

0: 대소문자 구분함 / 1: 대소문자 구분 안 함

MariaDB 시작

sudo systemctl start mariadb

 

적용 확인
mysql -u root -p -e "SHOW VARIABLES LIKE 'lower_case_table_names';"


# 정상 출력
+------------------------+-------+
| lower_case_table_names | 1     |
+------------------------+-------+

DB 계정 및 데이터베이스 생성

MariaDB 접속

sudo mariadb

 

데이터베이스 생성

CREATE DATABASE DB이름 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

 

사용자 생성 (외부 접속 허용 및 권한 부여)

CREATE USER '사용자 아이디'@'%' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON DB이름.* TO '사용자 아이디'@'%';
FLUSH PRIVILEGES;

방화벽 확인 (Ubuntu)

ufw 사용 시

sudo ufw status

 

사용 중이라면 포트 허용

 

sudo ufw allow 3306/tcp
sudo ufw reload

 


iptables 사용 시

# 전체 확인
sudo iptables -L -n -v --line-numbers

# INPUT 체인만 확인
sudo iptables -L INPUT -n -v --line-numbers

 

사용 중이라면 포트 허용

sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

 

나는 이렇게 넣었다

sudo iptables -I INPUT 5 -p tcp -m state --state NEW --dport 3306 -j ACCEPT

5번째 라인에 3306 satate NEW 상태로 삽입

 

정책 기본 값 변경

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

나가는 건 자유롭게 (OUTPUT ACCEPT): 서버 내부에서 업데이트를 받거나 외부 API를 호출하는 것은 허용합니다.

들어오는 건 일단 다 막기 (INPUT DROP): 일단 대문을 다 잠가버립니다. 그 후에 필요한 서비스(DB 3306 등)만 개별 규칙을 추가해서 대문을 조금씩 열어주는 방식을 취합니다.

 

해당 정책 기본 값을 설정 없이 (예. 22번 포트) 바로 실행 할 원격 터미널 접속이 끊길 수 있으니 규칙을 모두 추가 후 실행

 

iptables 규칙 영구 저장 (Ubuntu)

sudo apt install iptables-persistent -y
sudo netfilter-persistent save

그 외

mariaDB 자동 시작 확인

sudo systemctl enable mariadb

 

DB 백업 방법

mysqldump -u 사용자_아이디 -p DB이름 > backup.sql

 

 
반응형