본문 바로가기

Ubuntu 서버 사용 (5) MariaDB 서버 구축

와우대박 WowDaebak 2026. 1. 5.

(5) MariaDB 서버 구축데이터베이스의 중심 세우기

 

[개요]
Ubuntu 서버를 실제 서비스 서버로 활용하기 위해서는 반드시 데이터베이스(DB) 서버 구축이 필요하다.
이 글에서는 Ubuntu 서버MariaDB를 직접 설치하고, 보안 설정부터 데이터베이스·사용자 생성까지 실전 기준으로 단계별 구축 과정을 정리한다.
웹서버(Nginx)와 애플리케이션(Django)로 확장하기 전, DB 서버가 서버 구조에서 어떤 역할을 하는지를 명확히 이해하는 것이 목표다.
Ubuntu 서버 사용 시리즈 안내
(1) 우분투 기본 설정과 운영 준비
(2) 우분투 사용자·권한·보안 기초
(3) 우분투 네트워크와 SSH 접속
(4) 우분투 DB·웹서버 확장 준비
(5) 우분투 MariaDB 서버 구축
(6) 우분투 Nginx 웹서버 구축
(7) 우분투 서버 구조 완성

 

들어가며

목표

  • Ubuntu 서버에 DB 서버를 실제로 탑재할 수 있다.
  • “DB 서버에서 어떤 위치를 차지하는지 명확히 이해할 수 있다.

핵심 내용

  • MariaDB 역할과 서버 구조
  • Ubuntu MariaDB 설치
  • 보안 초기 설정 (mysql_secure_installation)
  • DB / 사용자 생성

 

 

 

 

1. 데이터베이스 서버란 무엇인가

(1) 서버 구조에서 DB의 역할

데이터베이스 서버는
웹 서비스에서 데이터를 영구적으로 저장하고 관리하는 핵심 구성 요소이다.

  • 사용자 정보
  • 게시글, 댓글
  • 설정 값
  • 로그 데이터

이 모든 정보는 파일이 아닌 DB 서버에 저장된다.

즉,

웹서버가 “입구”라면
DB 서버는 “기억을 담당하는 심장”이다.


(2) MariaDB를 사용하는 이유

MariaDB는 MySQL과 호환되는 오픈소스 데이터베이스 서버다.

  • MySQL과 명령어·구조 거의 동일
  • Ubuntu 기본 저장소에서 안정적으로 제공
  • 개인 학습부터 실무 서버까지 사용 가능

👉 학습용·실습용 서버에 가장 적합한 DB 서버다.


2. Ubuntu에 MariaDB 설치하기

(1) 패키지 목록 갱신

DB 서버 설치 전, 패키지 정보를 최신 상태로 갱신한다.

 
sudo apt update

[유의 사항]
패키지 목록을 갱신하지 않으면 오래된 버전이 설치될 수 있다.


(2) MariaDB 서버 설치

다음 명령어로 MariaDB 서버를 설치한다.

 
sudo apt install mariadb-server -y

설치가 완료되면 MariaDB 서비스자동으로 실행된다.


(3) 서비스 상태 확인

 
sudo systemctl status mariadb
  • active (running) 상태면 정상이다.
  • 실행 중이 아니라면 서버 역할을 수행할 수 없다.

3. MariaDB 초기 보안 설정

(1) 보안 설정이 필요한 이유

설치 직후의 DB 서버는 보안 설정이 거의 없는 상태다.

  • root 계정 접근 제한 없음
  • 불필요한 테스트 DB 존재
  • 외부 공격에 취약

따라서 초기 보안 설정은 필수 과정이다.


(2) mysql_secure_installation 실행

아래 명령어를 실행한다.

sudo mysql_secure_installation

 

 

MariaDB root 계정의 로그인 방식 선택

선택의미

Y (권장) 리눅스 root / sudo 사용자만 MariaDB root로 접속 가능
n MariaDB root 비밀번호로만 접속 (패스워드 인증)

mysql_secure_installation 전체 과정


(3) 단계별 설정 가이드

진행 중 나오는 질문에 대해 다음 기준으로 선택한다.

  1. root 비밀번호 설정 → Y
  2. 익명 사용자 제거 → Y
  3. 원격 root 로그인 차단 → Y
  4. 테스트 DB 제거 → Y
  5. 권한 테이블 다시 로드 → Y
[중요]
로컬 학습 서버라도 root 원격 접속 차단은 기본 원칙이다.

 구체적 설정 내용은 아래 단계별 설정 세부내용 더보기를 참고한다.

더보기

1️⃣ root 비밀번호 입력 (초기 진입)

 
Enter current password for root (enter for none):

 

의미

  • MariaDB의 root 계정 인증 확인 단계이다.
  • 방금 설치한 상태라면 비밀번호가 없으므로 Enter만 입력한다.

설명 문장 (블로그용)

MariaDB를 처음 설치한 경우 root 비밀번호가 설정되어 있지 않으므로, 이 단계에서는 Enter 키만 입력하여 진행한다.


2️⃣ unix_socket 인증 방식 선택 (핵심)

 
Switch to unix_socket authentication [Y/n]:

 

의미

  • 리눅스 OS 사용자 인증과 DB root를 연동할 것인지 묻는 질문이다.

선택 기준

 

선택의미
Y (권장) sudo 권한이 있는 사용자만 DB root 접근 가능
n DB root 비밀번호로 로그인

 

✅ 권장 입력

 
Y

설명 문장

unix_socket 인증 방식을 사용하면 리눅스 관리자 권한(sudo)을 가진 사용자만 MariaDB root 계정으로 접속할 수 있어 보안성이 크게 향상된다.


3️⃣ 익명 사용자 삭제

 
Remove anonymous users? [Y/n]:

 

의미

  • 이름 없는 테스트용 계정 존재 여부

✅ 권장 입력

 
Y

이유

  • 익명 사용자는 외부 공격의 주요 표적이 된다.

설명 문장

익명 사용자 계정은 테스트 목적 외에는 필요하지 않으며, 보안 위협이 될 수 있으므로 삭제한다.


4️⃣ root 원격 로그인 차단

 
Disallow root login remotely? [Y/n]:

 

의미

  • root 계정의 원격 접속 허용 여부

✅ 권장 입력

 
Y

이유

  • root는 서버 내부 관리용 계정
  • 웹 서비스에서는 절대 사용하지 않음

설명 문장

root 계정은 서버 내부 관리 전용으로 사용해야 하므로, 원격 접속을 차단하여 보안을 강화한다.


5️⃣ test 데이터베이스 삭제

 
Remove test database and access to it? [Y/n]:

 

의미

  • 기본 제공되는 test 데이터베이스 제거 여부

✅ 권장 입력

 
Y

설명 문장

기본으로 생성되는 test 데이터베이스는 운영 환경에서 사용되지 않으므로 제거한다.


6️⃣ 권한 테이블 재적용 (마무리)

 
Reload privilege tables now? [Y/n]:

 

의미

  • 지금까지 설정한 보안 정책 즉시 반영 여부

✅ 권장 입력

 
Y

설명 문장

변경된 사용자 및 권한 설정을 즉시 적용하기 위해 권한 테이블을 재로드한다.


✅ 완료 메시지

 
All done! If you've completed all of the above steps, your MariaDB installation should now be secure.

 

의미

  • MariaDB 기본 보안 설정 완료
  • 운영 가능한 최소 보안 상태 도달

🔐 설정 완료 후 구조 정리 (중요)

 
[Ubuntu OS] └─ MariaDB
                               ├─ root (관리자 / unix_socket)
                               └─ 서비스 계정 (Django 전용, 추후 생성)
  • root → 관리용
  • Django → 별도 DB 사용자 사용

 


4. 데이터베이스와 사용자 생성

(1) MariaDB 접속

 
sudo mariadb

정상 접속되면 DB 프롬프트가 표시된다.


(2) 데이터베이스 생성

 
CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4;
  • utf8mb4는 한글·이모지까지 안전하게 저장하기 위한 권장 설정이다.


(3) 사용자 생성

 
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'password';

 

[유의 사항]
실제 운영 환경에서 비밀번호를 복잡하게 설정해야 한다.


(4) 권한 부여

 
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost'; FLUSH PRIVILEGES;


(5) 생성 결과 확인

 
SHOW DATABASES; SELECT user, host FROM mysql.user;

 


5. 로컬 서버 기준 DB 접속 구조 이해

(1) 현재 서버 구조 요약

현재까지 완성된 구조는 다음과 같다.

  • Ubuntu OS
  • MariaDB 서버 (localhost)
  • 로컬 사용자 접근

즉,

외부에서는 접근 불가
서버 내부 서비스만 DB 접근 가능


(2) 이 구조가 중요한 이유

  • 보안 위험 최소화
  • 웹서버·애플리케이션 서버만 DB 접근
  • 실무 서버 구조와 동일한 흐름

👉 이후 Django를 연동할 때
이 DB 구조를 그대로 사용하게 된다.


6. 정리 – DB 서버는 이제 준비되었다

이 단계까지 완료하면 다음이 가능해진다.

  • Ubuntu 서버에 정식 DB 서버 탑재
  • 보안 설정 완료
  • DB·사용자 분리 구조 완성
  • 웹/애플리케이션 서버 연동 준비 완료

즉,

이제 이 서버는 ‘데이터를 저장할 수 있는 서버’가 되었다.


다음 편 예고

다음 글에서는
외부 요청을 받는 웹서버, Nginx를 설치하고
Ubuntu 서버를 진짜 서비스 서버 구조로 확장한다.

👉 Ubuntu 서버 사용 – (6) Nginx 웹서버 구축

 

Ubuntu 서버 사용 시리즈 안내
(1) 기본 설정과 운영 준비
(2) 사용자·권한·보안 기초
(3) 네트워크와 SSH 접속
(4) DB·웹서버 확장 준비
(5) MariaDB 서버 구축
(6) Nginx 웹서버 구축
(7) Ubuntu 서버 구조 완성

 

댓글

🌿 WowDaebak 와우대박 - 영상/디자인/IT 전문 블로그
💌 댓글로 인사해 주세요. 구독 & 하트 💗 +1 감사드려요!