Linux에서 MariaDB: 개념, 설치 방법 (Ubuntu/CentOS/Debian) 및 보안 설정

1. MariaDB란 무엇인가?

MariaDB 개요 및 주요 기능

MariaDB는 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다. MySQL을 기반으로 개발되었으며 높은 호환성 덕분에 많은 시스템과 애플리케이션에서 널리 채택되고 있습니다.

원래 MySQL이 Oracle에 인수된 후 일부 개발자들이 프로젝트를 분리하여 MariaDB를 시작했습니다. 그 결과 MariaDB는 MySQL과 유사한 명령 집합과 데이터 구조를 유지하면서 설계 단계에서 개방성과 투명성을 강조합니다.

MariaDB는 무료로 사용할 수 있으며 상업적·비상업적 용도 모두에 폭넓게 활용됩니다. 특히 Linux 서버 환경에서 강력한 실적을 보이며 안정성, 성능, 보안 면에서 높은 평가를 받고 있습니다.

MySQL과의 차이점

MariaDB와 MySQL은 매우 유사하며 많은 명령과 설정 파일을 그대로 사용할 수 있습니다. 하지만 몇 가지 중요한 차이점이 존재합니다.

  • 라이선스 차이 MySQL은 Oracle이 개발·관리하므로 일부 상업적 사용 시 라이선스 제한이 적용될 수 있습니다. 반면 MariaDB는 GPL(General Public License) 기반으로 보다 유연한 사용이 가능합니다.
  • 개발 속도와 커뮤니티 주도 방식 MariaDB는 커뮤니티 중심으로 활발히 개발되며 새로운 기능을 더 빠르게 도입합니다. 특히 스토리지 엔진 옵션·성능 최적화와 같은 기업용 기능이 강점입니다.
  • 확장성 및 호환성 MariaDB는 MySQL과 높은 호환성을 유지하면서도 자체 스토리지 엔진(예: Aria, ColumnStore)을 제공해 사용 사례에 따라 유연하게 운영할 수 있습니다. 다만 버전이 진화함에 따라 호환성 차이가 발생할 수 있으므로 마이그레이션 시 주의가 필요합니다.

MariaDB 선택의 장점

Linux 환경에 데이터베이스를 배포할 때 MariaDB는 다음과 같은 장점을 제공합니다.

  • 간단한 설정으로 손쉬운 설치
  • 가볍고 빠른 성능
  • 대규모 데이터 처리에 적합한 확장성
  • 장기적인 안정적인 운영
  • 전 세계 개발자들이 제공하는 풍부한 지식 및 지원 자료

이러한 이유로 MariaDB는 개인 개발 환경부터 기업용 프로덕션 시스템까지 다양한 환경에서 선택되고 있습니다.

2. 설치 전 준비 작업

Linux 환경에 MariaDB를 설치하기 전에 확인해야 할 사항과 수행해야 할 준비 단계가 있습니다. 이 과정을 건너뛰면 이후에 문제 발생 가능성이 높아지므로 사전 준비가 매우 중요합니다.

시스템 요구 사항 확인

MariaDB는 가볍고 빠른 데이터베이스이지만 최소 시스템 요구 사항이 존재합니다. 아래는 일반적인 가이드라인이며(버전·사용 방식에 따라 차이 있음) 참고용입니다:

  • OS : Ubuntu, Debian, CentOS, RHEL 등 Linux 배포판
  • CPU : 1GHz 이상(멀티코어 권장)
  • Memory : 512MB 이상(권장 1GB 이상)
  • Storage : 1GB 이상의 여유 공간(데이터 양에 따라 조정)
  • Network : 패키지 다운로드 및 업데이트 적용을 위한 인터넷 연결

구버전 Linux 배포판에서는 최신 MariaDB 버전을 지원하지 않을 수 있습니다. 사용 중인 Linux 버전을 확인하고 필요에 따라 저장소를 추가하거나 다른 조치를 취하십시오.

필수 패키지 확인 및 업데이트

MariaDB를 설치하려면 일반적으로 OS의 표준 패키지 관리자(APT, YUM 등)를 사용합니다. 사전에 시스템을 업데이트하면 의존성 문제를 예방할 수 있습니다.

Ubuntu/Debian 예시:

sudo apt update
sudo apt upgrade -y

CentOS/RHEL에서는 다음을 실행합니다:

sudo yum update -y

또한 아래 패키지들이 설치되어 있는지 확인하고(누락된 경우 설치)하십시오.

  • curl : MariaDB 저장소를 추가할 때 사용됩니다
  • gnupg : 서명 키를 검증할 때 사용됩니다
  • software-properties-common (주로 Ubuntu용): PPA 관리에 필요합니다. Debian에서는 항상 필요하지 않을 수 있습니다.

공식 MariaDB 저장소를 사용하는 것을 고려하세요

많은 Linux 배포판에서 MariaDB는 기본 패키지 저장소에 포함되어 있지만 제공되는 버전이 오래될 수 있습니다.

최신 안정 버전을 항상 사용하고 싶다면 공식 MariaDB 저장소를 추가할 수 있습니다. 다음 섹션에서는 OS별 단계가 소개되지만, 미리 사용할 버전을 결정하면 설치가 더 원활해집니다.

3. 주요 배포판별 설치 단계

MariaDB는 많은 Linux 배포판에서 사용할 수 있지만 설치 방법은 약간씩 다릅니다. 이 섹션에서는 Ubuntu, CentOS, Debian 세 가지 대표적인 배포판에 대한 자세한 설치 단계를 안내합니다.

Ubuntu에서 MariaDB 설치

Ubuntu에서는 APT 패키지 관리자를 사용해 MariaDB를 설치합니다. 이 섹션은 Ubuntu 20.04 / 22.04 LTS를 대상으로 합니다.

1. 패키지 목록 업데이트

sudo apt update

2. MariaDB 설치

sudo apt install mariadb-server -y

이 명령은 MariaDB와 필요한 종속 패키지를 자동으로 설치합니다.

3. 서비스 시작 및 활성화

sudo systemctl start mariadb
sudo systemctl enable mariadb

4. 실행 확인

sudo systemctl status mariadb

“active (running)”이라고 표시되면 정상적으로 시작된 것입니다.

CentOS에서 MariaDB 설치

CentOS 7 및 CentOS Stream 8에서는 YUM 또는 dnf를 사용합니다. 기본 저장소가 오래된 버전을 제공하는 경우가 많아 공식 저장소를 추가하는 것이 일반적입니다.

1. 공식 저장소 추가 (예: MariaDB 10.6)

sudo vi /etc/yum.repos.d/MariaDB.repo

아래 내용을 붙여넣고 저장합니다:

[mariadb]
name = MariaDB
baseurl = https://downloads.mariadb.com/MariaDB/mariadb-10.6/yum/centos7-amd64
gpgkey=https://downloads.mariadb.com/MariaDB/MariaDB-Server-GPG-KEY
gpgcheck=1

*환경에 맞게 버전 및 OS 설정을 조정하십시오.

2. 패키지 설치

sudo yum install mariadb-server -y

또는 CentOS Stream 8 이상에서는:

sudo dnf install mariadb-server -y

3. 서비스 시작 및 활성화

sudo systemctl start mariadb
sudo systemctl enable mariadb

Debian에서 MariaDB 설치

Debian도 APT를 사용하지만 기본 저장소 대신 공식 MariaDB 저장소를 사용하면 최신 안정 버전을 설치할 수 있습니다.

1. 종속 패키지 설치

sudo apt install curl software-properties-common gnupg -y

2. MariaDB 저장소 추가 (예: Debian 11 “Bullseye”)

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

3. 설치

sudo apt update
sudo apt install mariadb-server -y

4. 서비스 시작 및 활성화

sudo systemctl start mariadb
sudo systemctl enable mariadb

4. 문자 집합 구성

일본어 환경에서 MariaDB를 사용할 때 가장 중요한 점 중 하나는 문자 집합(인코딩)을 설정하는 것입니다. 일본어는 멀티바이트 문자를 포함하므로 잘못된 설정으로 운영을 시작하면 문자 깨짐이나 데이터 손상과 같은 문제가 발생할 수 있습니다.

일본어 환경에 권장되는 문자 집합: UTF-8

MariaDB에서는 권장 문자 집합이 utf8mb4입니다. 기존 utf8보다 더 강력하며 이모지와 같은 4바이트 문자를 지원하므로 일본어뿐 아니라 다국어 환경에도 적합합니다.

MySQL 계열의 기본 설정에서는 latin1이나 utf8이 사용될 수 있으며, 그대로 두면 문제가 발생할 수 있습니다. 따라서 설치 직후 설정을 utf8mb4로 변경하십시오.

my.cnf 설정 파일 편집 방법

MariaDB의 설정 파일은 일반적으로 /etc/mysql/my.cnf 또는 /etc/my.cnf에 있습니다. 아래와 같이 [client][mysqld] 섹션을 추가하거나 편집하십시오.

[client]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

설정을 변경한 후 MariaDB를 재시작하여 적용하십시오:

sudo systemctl restart mariadb

설정이 적용되었는지 확인

MariaDB에 연결하여 설정이 적용되었는지 확인합니다.

sudo mariadb

연결한 후 다음 명령을 실행합니다:

SHOW VARIABLES LIKE 'character\_set%';

예시 출력:

character_set_client    utf8mb4
character_set_connection utf8mb4
character_set_database   utf8mb4
character_set_results    utf8mb4
character_set_server     utf8mb4

이와 같이 보이면 문자 집합 설정이 올바르게 적용된 것입니다.

참고: 기존 데이터의 문자 집합

이미 존재하는 데이터베이스나 테이블이 있다면, 그들의 문자 집합은 자동으로 변경되지 않습니다. 필요하다면 아래와 같은 ALTER 문을 사용해 개별적으로 변경해야 합니다:

ALTER DATABASE your_database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;

마찬가지로 테이블이나 컬럼 수준에서도 설정을 변경할 수 있습니다.

5. 보안 구성

MariaDB를 설치한 직후에는 보안이 완전히 강화되지 않습니다. 운영 환경에 사용하기 전에 최소 필수 보안 설정을 적용하면 무단 접근 및 데이터 유출 위험을 줄일 수 있습니다. 이 섹션에서는 기본적인 MariaDB 보안 구성 단계에 대해 소개합니다.

mysql_secure_installation 실행

MariaDB는 설치 직후에 실행해야 하는 보안 강화 스크립트mysql_secure_installation을 제공합니다.

다음 명령으로 실행하십시오:

sudo mysql_secure_installation

실행하면 일련의 질문이 순서대로 표시됩니다. 각 옵션의 의미는 다음과 같습니다.

  1. Set (or update) the root password → 루트 비밀번호 설정(또는 업데이트) → MariaDB 관리자 사용자 “root”의 비밀번호를 설정합니다. 강력한 비밀번호를 사용하십시오.
  2. Remove anonymous users → 익명 사용자 제거 → 기본적으로 “익명” 사용자가 존재할 수 있습니다. 이는 불필요하고 위험하므로 제거를 권장 합니다.
  3. Disallow remote root login → 원격 루트 로그인 금지 → 외부 네트워크에서 직접 루트 접근을 허용하는 것은 매우 위험합니다. 대부분의 경우 비활성화 하도록 설정합니다.
  4. Remove the test database → 테스트 데이터베이스 제거 → 테스트용으로 생성된 “test” 데이터베이스도 많은 경우 불필요합니다. 제거를 권장 합니다.
  5. Reload privilege tables → 권한 테이블 재로드 → 위 변경 사항을 즉시 적용합니다. “Yes”로 확인 합니다.

이 모든 질문에 답하면 MariaDB의 기본 초기 상태 보안이 크게 강화됩니다.

방화벽 구성 (필요한 경우)

MariaDB는 일반적으로 포트 3306을 통해 통신합니다. 이 포트를 열어야 하는지는 시스템 사용 방식에 따라 다릅니다.

  • When using it locally or on a standalone server → 로컬이나 독립 서버에서 사용할 경우 → 포트 3306을 닫은 상태로 유지할 수 있습니다.
  • When allowing external access (e.g., connecting from an app on another server) → 외부 접근을 허용하는 경우(예: 다른 서버의 앱에서 연결) → 필요한 IP 주소에만 접근을 허용하도록 엽니다.

예시: Ubuntu에서 UFW로 접근 제한

sudo ufw allow from 192.168.0.10 to any port 3306

root가 아닌 사용자 생성 (권장)

운영 환경에서는 관리자 사용자 “root” 대신 전용 사용자 계정을 생성하여 사용하는 것이 최선의 방법입니다. 예시는 다음과 같습니다:

CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON your_database.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;

애플리케이션별로 별도 사용자를 사용하면 자격 증명이 유출될 경우 영향을 최소화할 수 있습니다.

6. 검증

MariaDB를 설치하고 초기 구성을 완료한 뒤 보안 조치를 적용하면, 최종 단계는 모든 것이 정상적으로 작동하는지 확인하는 것입니다. 이 섹션에서는 연결을 확인하고 기본 SQL 명령을 실행하는 방법을 설명합니다.

MariaDB에 연결

설치 후, 다음 명령어로 MariaDB에 연결할 수 있는지 확인하세요:

sudo mariadb

또는, 사용자 지정과 비밀번호 제공을 원하시면:

mariadb -u root -p

요청 시, mysql_secure_installation으로 설정한 비밀번호를 입력하세요.

로그인이 성공하면, 다음과 같은 프롬프트가 표시됩니다:

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.6.16-MariaDB MariaDB Server

이것이 보이면, MariaDB가 정상적으로 실행 중이며 성공적으로 연결할 수 있습니다.

데이터베이스 생성

다음으로, 간단한 테스트로 데이터베이스를 생성하세요.

CREATE DATABASE testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

성공적으로 실행되면, 데이터베이스가 문제 없이 생성되었습니다.

가지고 있는 데이터베이스 목록을 확인하세요:

SHOW DATABASES;

testdb가 나타나면, 성공입니다.

테이블 생성 및 데이터 삽입

테스트 테이블을 생성하고 일부 데이터를 삽입하세요.

USE testdb;

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50),
  email VARCHAR(100)
);

INSERT INTO users (name, email) VALUES ('田中太郎', 'taro-tanaka@example.com');

※이 예시는 utf8mb4를 사용하여 멀티바이트(일본어) 텍스트가 올바르게 저장되는지 확인합니다.

데이터 검색

삽입된 데이터를 확인하려면, 다음 쿼리를 실행하세요.

SELECT * FROM users;

출력이 Taro Tanaka의 정보를 보여주면, 데이터베이스가 올바르게 작동하는 것으로 결론지을 수 있습니다.

서버 정보 확인

MariaDB 버전 등의 기본 정보를 확인하려면, 다음 명령어를 실행하세요:

STATUS;

이것은 연결 상태, 서버 버전, 문자셋 구성 등의 세부 정보를 표시합니다.

7. 자주 묻는 질문 (FAQ)

Linux 환경에서 MariaDB를 설치하고 운영할 때, 많은 사람들이 공통적인 질문이나 문제를 겪습니다. 이를 미리 어떻게 처리할지 아는 것은 안심이 될 수 있습니다. 여기서는 초보자부터 중급자까지를 위한 자주 검색되는 포인트를 FAQ 형식으로 요약했습니다.

Q1. MariaDB 버전을 어떻게 확인할 수 있나요?

MariaDB에 연결한 후, 다음 명령어를 실행하여 확인할 수 있습니다.

SELECT VERSION();

또는, 명령줄에서 직접 다음과 같이 확인할 수 있습니다:

mariadb --version

예시 출력:

mariadb  Ver 15.1 Distrib 10.6.16-MariaDB, for Linux (x86_64)

Q2. 설치 중 “Package not found” 오류가 발생하면 어떻게 하나요?

다음을 확인하세요:

  • 패키지 목록이 최신이 아닙니다 → sudo apt update 또는 sudo yum update 를 실행한 후 다시 시도하세요
  • 공식 MariaDB 저장소가 올바르게 추가되지 않았습니다 → 저장소 구성 파일(예: /etc/apt/sources.list.d/ 또는 /etc/yum.repos.d/ )을 확인하세요
  • 배포판과 MariaDB 버전이 호환되지 않습니다 → MariaDB 공식 다운로드 페이지 에서 지원 버전을 다시 확인하세요

Q3. MariaDB를 어떻게 제거하나요?

Ubuntu/Debian의 경우:

sudo apt remove --purge mariadb-server mariadb-client -y
sudo apt autoremove -y

CentOS/RHEL의 경우:

sudo yum remove mariadb-server -y

그 후, 데이터와 구성 파일도 제거하려면 다음을 실행하세요:

sudo rm -rf /var/lib/mysql
sudo rm -rf /etc/my.cnf /etc/mysql

*중요한 데이터가 있으면 삭제 전에 반드시 백업하세요.

Q4. 데이터베이스를 어떻게 백업하고 복원하나요?

백업 (덤프 파일 생성):

mysqldump -u root -p your_database > backup.sql

복원:

mysql -u root -p your_database < backup.sql

이 방법은 간단하고 일반적이며, MariaDB 마이그레이션과 재해 복구에 매우 유용합니다.

Q5. 서버 외부에서 MariaDB에 연결할 수 없는 이유는 무엇인가요?

가능한 원인으로는:

  • bind-address127.0.0.1로 설정되어 있습니다/etc/mysql/my.cnf 또는 /etc/my.cnf 에서 bind-address = 0.0.0.0 으로 변경하십시오 (보안에 유의하세요)
  • 포트 3306이 방화벽에 의해 차단되었습니다sudo ufw allow 3306 와 같이 명령을 실행하여 포트를 엽니다
  • 사용자가 원격 연결 권한이 없습니다user@'%' 형태의 사용자를 생성해야 합니다