블로그 방문자만 3개월 추가 무료 이용권 + 3년 플랜 10% 할인 혜택을 받으세요 와이스블로그10
거래를 잡아

2026년에 Linux 서버에서 MariaDB를 사용하는 방법은 무엇일까요? (단계별 튜토리얼)

Linux 서버에서 MariaDB를 사용하려면배포판 저장소에서 MariaDB를 설치하고, MariaDB 서비스를 시작 및 활성화하고, mysql_secure_installation을 실행하여 접근 권한을 강화하고, 최소 권한의 데이터베이스와 사용자를 생성한 다음, MySQL 클라이언트를 통해 연결하십시오.

운영 환경에서는 백업, 원격 접속 및 기본적인 성능 튜닝을 구성해야 합니다. 이러한 방법을 배우세요. Linux 서버에서 MariaDB를 사용하세요 웹 환경은 웹사이트, 애플리케이션, 분석 도구 및 내부 도구를 호스팅하는 데 필수적입니다.

이 가이드는 설치, 보안, 기본 SQL 작업, 원격 연결, 백업 및 성능 튜닝에 대한 내용을 단계별로 안내하며, 복사하여 붙여넣을 수 있는 실용적인 명령어를 제공합니다.

초보자에게 친숙하고 실제 호스팅 경험을 바탕으로 개발된, 프로덕션 환경에 대한 이해도가 높습니다.


MariaDB란 무엇이며, 리눅스에서 MariaDB를 사용하는 이유는 무엇일까요?

MariaDB는 고성능 오픈 소스 데이터베이스입니다. 관계형 데이터베이스 manageMySQL을 완벽하게 대체할 수 있는 관계형 데이터베이스 관리 시스템(RDBMS)입니다.

널리 사용됩니다 램프/렘프 스택을 지원하고 고급 스토리지 엔진을 지원하며 복제, 보안 및 확장성을 위한 엔터프라이즈급 기능을 제공합니다. Linux 서버에서 안정적이고 빠르며 패키지 지원을 통해 원활하게 작동합니다. managers.

사전 조건

  • 리눅스 서버 (우분투/데비안, 록키/알마리눅스/센티오스, RHEL, SUSE, 아치) sudo 권한으로
  • 필요에 따라 포트를 여세요 (원격 접속용 3306/TCP)
  • 기본 단말기 사용법
  • 묶음 manager이 구성되었고 시스템이 최신 상태입니다.

우분투 / 데비안

sudo apt update
sudo apt install mariadb-server mariadb-client
mysql --version

Rocky Linux / AlmaLinux / CentOS / RHEL

# RHEL 8+/Rocky/Alma
sudo dnf install mariadb-server mariadb
# RHEL/CentOS 7 (legacy)
sudo yum install mariadb-server mariadb
mysql --version

openSUSE / SLES

sudo zypper refresh
sudo zypper install mariadb mariadb-client
mysql --version

최신 주요 버전의 경우 공식 MariaDB 저장소를 사용할 수도 있습니다. 저장소가 사용 중인 배포판 버전과 일치하는지 항상 확인하십시오.

서비스 시작, 활성화 및 확인

sudo systemctl enable --now mariadb
sudo systemctl status mariadb
sudo ss -tulpn | grep 3306   # Confirm listening port
sudo mysqladmin ping

사용하는 배포판에서 mysql 서비스 이름을 사용하는 경우 mariadb를 mysql로 ​​바꾸세요. 대부분의 최신 시스템은 이를 mariadb로 별칭 지정합니다.

MariaDB 보안 설치(mysql_secure_installation)

함께 제공되는 보안 강화 스크립트를 실행하여 루트 암호를 설정하고, 익명 사용자를 제거하고, 원격 루트 로그인을 차단하고, 테스트 데이터베이스를 정리하십시오.

sudo mysql_secure_installation
# Steps typically include:
# - Set root password (if prompted)
# - Remove anonymous users
# - Disallow root login remotely
# - Remove test database
# - Reload privilege tables

일부 배포판에서는 루트 사용자가 unix_socket 플러그인을 통해 인증합니다. 이 경우 루트 권한으로 로컬에서 sudo mysql 명령어를 암호 없이 실행하십시오.

기본 SQL 연결 및 실행

# Connect as root (password auth)
mysql -u root -p

# Or, if using unix_socket
sudo mysql
-- Inside the MariaDB shell:
SHOW VARIABLES LIKE 'version%';
CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Create least-privilege user for the app
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongP@ss!';
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;

-- Test access
EXIT;
mysql -u appuser -p -D appdb -e "SHOW TABLES;"

완전한 유니코드(이모지 포함) 지원을 위해 utf8mb4를 사용하십시오. 루트 사용자 대신 애플리케이션별로 전용 사용자를 생성하십시오.


가져오기, 내보내기 및 백업

mysqldump를 사용한 논리적 백업

# Dump a single database
mysqldump -u root -p --routines --triggers --single-transaction appdb > appdb.sql

# Restore
mysql -u root -p appdb < appdb.sql

# Dump all databases
mysqldump -u root -p --all-databases --single-transaction > all.sql

MariaBackup을 이용한 물리적 백업(핫 백업)

# Install mariabackup if not present (package name may vary by distro)
# Example (Debian/Ubuntu): sudo apt install mariadb-backup

# Create a backup
sudo mariabackup --backup --target-dir=/var/backups/mariadb/$(date +%F) --user=root --password=YOURPASS

# Prepare the backup (roll forward)
sudo mariabackup --prepare --target-dir=/var/backups/mariadb/2025-01-01

# Restore (service must be stopped)
sudo systemctl stop mariadb
sudo mariabackup --copy-back --target-dir=/var/backups/mariadb/2025-01-01
sudo chown -R mysql:mysql /var/lib/mysql
sudo systemctl start mariadb

cron을 사용하여 백업 일정을 예약하고 주기적으로 복원 테스트를 수행하십시오. RPO/RTO 목표를 충족하기 위해 백업 복사본을 서버 외부 저장소에 보관하십시오.


원격 액세스 허용 (선택 사항)

바인딩 주소를 편집하고 원격 사용자를 생성합니다.

# Edit server config (path may vary)
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf   # Debian/Ubuntu
# or: /etc/my.cnf.d/server.cnf or /etc/my.cnf

# Set to listen on all interfaces or a specific IP
bind-address = 0.0.0.0
# Save file, then restart
sudo systemctl restart mariadb
# Create a remote user (replace 203.0.113.10 with your app server's IP)
sudo mysql -e "CREATE USER 'appuser'@'203.0.113.10' IDENTIFIED BY 'StrongP@ss!';"
sudo mysql -e "GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'203.0.113.10'; FLUSH PRIVILEGES;"

방화벽을 열고 테스트해 보세요.

# UFW (Ubuntu)
sudo ufw allow 3306/tcp

# firewalld (RHEL/Alma/Rocky)
sudo firewall-cmd --permanent --add-service=mysql
sudo firewall-cmd --reload

# Test from remote host
mysql -h your.mariadb.ip -u appuser -p -D appdb -e "SELECT 1;"

운영 환경에서는 강력한 암호를 사용하고, 소스 IP로 접근을 제한하며, TLS 암호화 연결(ssl_cert, ssl_key, ssl_ca)을 우선적으로 사용하십시오. 원격 루트 로그인 시도는 피하십시오.


성능 기본 사항: 중요한 안전한 기본 설정

  • innodb_buffer_pool_size: 서버 RAM의 50~70% (전용 DB 호스트의 경우)
  • innodb_log_file_size: 사용자의 작업량에 적합합니다(일반적으로 512M~2G).
  • 최대 연결 수: 앱 동시 접속자 수에 맞게 크기를 조정합니다.
  • 느린 쿼리 로그 + 긴 쿼리 시간: 인덱싱 또는 최적화할 쿼리를 식별합니다.
  • 임시 파일 사용량이 많은 경우 빠른 스토리지에 임시 디렉터리를 생성합니다.
# Example snippet (my.cnf or server.cnf)
[mysqld]
innodb_buffer_pool_size=4G
innodb_log_file_size=1G
max_connections=300
slow_query_log=1
slow_query_log_file=/var/log/mysql/mariadb-slow.log
long_query_time=1

변경 사항을 적용한 후에는 MariaDB를 재시작하고 메모리 사용량을 모니터링하십시오. 성능 향상을 위해서는 인덱싱 및 쿼리 설계에 집중하는 것이 좋습니다.

모니터링 및 로그

  • 서비스 상태: systemctl status mariadb, journalctl -u mariadb
  • 런타임 : SHOW PROCESSLIST;, SHOW ENGINE INNODB STATUS\G
  • 관리자 통계: mysqladmin status, mysqladmin variables
  • 느린 쿼리 로그를 검토하여 인덱스와 쿼리를 최적화합니다.

MariaDB와 MySQL 비교 (간단한 실전 팁)

  • 호환성 : MariaDB는 MySQL을 완벽하게 대체할 수 있도록 설계되었지만, 상위 버전으로 갈수록 기능에서 차이가 발생합니다.
  • 성능/특징: MariaDB는 다양한 스토리지 엔진과 빠른 개선 속도를 제공하므로 마이그레이션 시 호환성을 검증해야 합니다.
  • 도구 : MySQL 클라이언트와 MySQLdump는 작동 방식이 유사하지만, 일부 플러그인과 인증 방식이 다릅니다.

일반적인 문제 해결

설치 후 루트 계정으로 로그인할 수 없습니다.

  • 소켓 인증을 시도해 보세요: sudo mysql
  • 인증 플러그인을 확인하세요: SELECT user, host, plugin FROM mysql.user;
  • 필요한 경우 비밀번호를 설정하세요. ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewP@ss!';

서비스 시작에 실패함

  • 로그 확인: journalctl -u mariadb -xe
  • 데이터 디렉터리 권한을 확인하십시오: chown -R mysql:mysql /var/lib/mysql
  • 항구 갈등: 3306번이 비어 있는지 확인하고 업데이트하세요. port 필요한 경우 설정 파일에 추가하세요.

원격 연결이 거부되었습니다.

  • bind-address가 원격 액세스를 허용하는지 확인하십시오.
  • 방화벽에서 3306/TCP 포트가 열려 있는지 확인하십시오.
  • 올바른 호스트(IP 또는 %)에 권한을 부여하십시오.

실제 현장 모범 사례

  • 애플리케이션별로 별도의 사용자를 지정하고 최소 권한을 부여하십시오.
  • 새로운 데이터베이스와 테이블에 대해 utf8mb4를 표준화하십시오.
  • 매일 밤 백업을 자동화하고 분기별로 복원 테스트를 실시합니다.
  • 느린 쿼리를 포착하고 반복적으로 인덱싱합니다.
  • OS 및 MariaDB 패키지를 변경 기간에 맞춰 최신 상태로 유지하세요.

MariaDB는 여러분의 스택에 어떻게 활용될 수 있을까요?

MariaDB는 CMS 플랫폼에 사용됩니다. (워드프레스, 줌라, 드루팔)전자상거래(WooCommerce), CRM 및 내부 마이크로서비스에 적합합니다. NGINX/Apache와 PHP-FPM, Node.js, Python 또는 Go와 함께 사용할 수 있습니다. 부하가 큰 경우에는 데이터베이스를 별도의 VM 또는 서버에 격리하고 복제본을 사용하여 읽기 작업을 확장하십시오.

관리형 옵션: 데이터베이스가 아닌 앱 개발에 집중하세요

원하지 않으시면 manage 패치, 백업, 그리고 직접 튜닝하기, YouStable 최적화된 VPS 및 전용 서버를 제공합니다. MariaDB와 호환되는 이미지를 사용하여 24 / 7 지원또한, 보안 강화에 대한 모범 사례를 제공합니다. 하드웨어 규모 산정, 원격 액세스 보안 설정, 자동 백업 설정 등을 지원하여 기능 출시 속도를 높여드립니다.


자주 묻는 질문's

우분투에 MariaDB를 설치하고 보안을 강화하는 방법은 무엇인가요?

sudo apt update && sudo apt install mariadb-server 명령을 실행한 다음, sudo systemctl enable –now mariadb 명령을 실행하십시오. 루트 암호를 설정하고, 익명 사용자를 제거하고, 원격 루트 접근을 비활성화하고, 권한을 다시 로드하여 보안을 강화하려면 sudo mysql_secure_installation 명령을 실행하십시오.

데이터베이스와 사용자를 생성하는 가장 빠른 방법은 무엇인가요?

루트 권한으로 접속하여 다음 명령어를 실행하세요: CREATE DATABASE appdb CHARACTER SET utf8mb4; CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongP@ss!'; GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost'; FLUSH PRIVILEGES; 그런 다음 mysql -u appuser -p -D appdb 명령어로 테스트하세요.

원격 연결을 안전하게 허용하려면 어떻게 해야 하나요?

바인드 주소를 0.0.0.0 또는 서버 IP 주소로 설정하고, 애플리케이션 서버 IP 주소로만 접근이 제한된 사용자를 생성하고, 방화벽에서 3306번 포트를 열고, TLS를 우선적으로 사용하도록 설정하십시오. 원격 루트 접근은 절대 허용하지 말고, 필요한 경우가 아니면 % 기호 사용을 피하십시오.

mysqldump와 mariabackup 중 어떤 백업 방법을 사용해야 할까요?

소규모 데이터베이스 및 휴대성(논리적 백업)에는 mysqldump를 사용하십시오. 대규모의 사용량이 많은 데이터베이스는 일관성 있는 물리적 백업과 빠른 복원이 필요하므로 mariabackup을 사용하십시오. 많은 팀에서 심층 방어를 위해 두 가지 모두를 사용합니다.

새 서버에서 MariaDB 설정을 어떻게 먼저 조정해야 할까요?

먼저 innodb_buffer_pool_size를 (전용 DB 호스트의 경우 RAM의 50~70%)로 설정하고, slow_query_log를 활성화하여 병목 현상을 파악하고, max_connections를 애플리케이션 수요에 맞게 적절히 조정하고, 안정적인 백업을 확보하십시오. 그런 다음 실제 워크로드 데이터를 기반으로 인덱스와 쿼리를 최적화하십시오.

산지트 차우한

산짓 차우한은 블로거이자 SEO 전문가로, 웹사이트의 유기적인 성장을 돕는 데 전념하고 있습니다. 그는 트래픽 증가, 검색 순위 향상, 온라인 인지도 극대화를 위한 실용적인 전략, 실행 가능한 팁, 그리고 통찰력을 공유합니다.

코멘트 남김

귀하의 이메일 주소는 공개되지 않습니다. *표시항목은 꼭 기재해 주세요. *

위쪽으로 스크롤