Rocky Linux / MariaDB 설치하는 방법

Rocky Linux에서는 mariadb-server 패키지를 설치하고 mariadb 서비스를 활성화하면 MariaDB 서버를 시작할 수 있습니다. 설치 후 mariadb-secure-installation으로 불필요한 기본 계정을 정리하고, 애플리케이션에는 root가 아닌 최소 권한 계정을 만들어 사용하세요.

제공 버전과 패키지 확인하기

cat /etc/rocky-release
dnf info mariadb-server
dnf module list mariadb

Rocky Linux 버전과 DNF 구현에 따라 모듈 명령 지원 여부와 제공 버전이 다릅니다. 애플리케이션이 특정 MariaDB 주 버전을 요구한다면 기본 저장소와 MariaDB 공식 저장소 중 하나를 선택하고, 서로 다른 저장소의 서버 패키지를 혼합하지 마세요.

MariaDB 설치하고 시작하기

서버 패키지 설치

sudo dnf install mariadb-server

설치 결과를 확인합니다.

rpm -q mariadb-server
mariadb --version

서비스 활성화

sudo systemctl enable --now mariadb
systemctl status mariadb

시작에 실패하면 다음 로그에서 원인을 확인합니다.

journalctl -u mariadb -b --no-pager

로컬 관리자 접속 확인

sudo mariadb

최근 MariaDB는 root 데이터베이스 계정에 Unix 소켓 인증을 사용하는 구성이 흔합니다. 이 경우 Linux의 관리자 권한으로 로컬 접속할 수 있으며 데이터베이스 root 비밀번호를 별도로 만들 필요가 없을 수 있습니다.

초기 보안 설정하기

sudo mariadb-secure-installation

이 도구는 익명 사용자 제거, 원격 root 접속 제한, 테스트 데이터베이스 제거 등을 대화형으로 설정합니다. MariaDB 10.4 이후에는 Unix 소켓 인증 때문에 오래된 안내와 질문 흐름이 다를 수 있습니다. 자세한 내용은 MariaDB 공식 보안 설치 문서를 확인하세요.

mysql_secure_installation 이름이 호환용 링크로 남아 있을 수 있지만 새 문서에서는 mariadb-secure-installation을 사용하는 편이 명확합니다.

애플리케이션 데이터베이스와 계정 만들기

데이터베이스 생성

CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

정렬 규칙은 검색·정렬 결과와 인덱스 동작에 영향을 줍니다. 애플리케이션 요구 사항과 사용하는 MariaDB 버전의 지원 목록을 확인하세요.

로컬 전용 사용자 생성

CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'replace-with-a-strong-secret';
GRANT SELECT, INSERT, UPDATE, DELETE ON appdb.* TO 'appuser'@'localhost';

예시 비밀번호를 그대로 사용하지 마세요. 애플리케이션에 필요한 권한만 부여하고 GRANT ALL ON *.*와 원격 root 사용을 피합니다.

권한 확인

SHOW GRANTS FOR 'appuser'@'localhost';

최근 MariaDB에서는 계정·권한 변경 명령이 즉시 반영되므로 일반적인 CREATE USER와 GRANT 뒤에 무조건 FLUSH PRIVILEGES를 실행할 필요는 없습니다. 권한 테이블을 직접 수정하지 마세요.

원격 접속을 제한적으로 허용하기

현재 수신 설정 확인하기

sudo mariadbd --print-defaults
ss -lntp | grep 3306

설정 파일 위치와 적용 순서는 패키지에 따라 달라질 수 있습니다. /etc/my.cnf와 /etc/my.cnf.d/의 include 관계를 확인하고 기존 파일을 백업하세요.

특정 서버 주소에서만 수신하기

[mysqld] 영역에 실제 사설 IP를 지정하는 구성을 검토합니다.

[mysqld]
bind-address = 192.0.2.20

0.0.0.0은 모든 IPv4 인터페이스에서 수신하므로 꼭 필요한 경우가 아니라면 특정 주소로 제한하세요. 원격 접속 설정은 MariaDB 원격 접속 공식 가이드를 참고할 수 있습니다.

원격 전용 사용자와 방화벽 제한

CREATE USER 'appuser'@'192.0.2.10' IDENTIFIED BY 'replace-with-a-strong-secret';
GRANT SELECT, INSERT, UPDATE, DELETE ON appdb.* TO 'appuser'@'192.0.2.10';
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.0.2.10/32" port port="3306" protocol="tcp" accept'
sudo firewall-cmd --runtime-to-permanent

문서용 주소를 실제 애플리케이션 서버 주소로 바꾸세요. 사용자 호스트를 %로 만들고 포트를 인터넷 전체에 개방하는 조합은 피해야 합니다.

설정 적용과 연결 시험

sudo systemctl restart mariadb
sudo systemctl status mariadb
ss -lntp | grep 3306

클라이언트에서 접속합니다.

mariadb --host=192.0.2.20 --user=appuser --password appdb

--password 뒤에 값을 직접 붙이지 않으면 대화형으로 입력할 수 있습니다. 비밀번호를 명령행에 적으면 셸 기록과 프로세스 목록에 노출될 수 있습니다.

신뢰할 수 없는 네트워크를 통과한다면 TLS 인증서를 구성하고 클라이언트가 서버 인증서를 검증하도록 설정하세요.

업데이트와 백업 전 확인 사항

  • 데이터와 설정 파일을 정기적으로 백업하고 다른 시스템에서 복구 시험을 합니다.
  • 주 버전 변경 전 릴리스 노트, 제거된 기능과 문자 집합·정렬 규칙 호환성을 확인합니다.
  • 패키지 업데이트 후 필요한 경우 mariadb-upgrade 실행 여부를 설치한 버전 문서에서 확인합니다.
  • 디스크 사용량, 연결 수, 느린 쿼리, 복제 상태와 오류 로그를 모니터링합니다.
  • 애플리케이션 자격 증명은 설정 파일 권한 또는 비밀 관리 시스템으로 보호합니다.

자주 묻는 질문

sudo mariadb는 되는데 mariadb -u root -p는 실패합니다

root 계정이 Unix 소켓 인증을 사용하기 때문일 수 있습니다. 현재 인증 플러그인을 확인하고, 특별한 이유가 없다면 로컬 관리자 접속 방식을 유지하세요.

외부 접속이 되지 않습니다

bind-address, 원격 사용자 계정의 Host 값, 3306 수신 상태, firewalld와 클라우드 보안 그룹을 순서대로 확인하세요.

3306 포트를 전체 인터넷에 열어도 되나요?

권장하지 않습니다. 애플리케이션 서버의 고정 주소나 사설망으로 제한하고, VPN·TLS·최소 권한 계정을 함께 사용하세요.

mysql_secure_installation을 사용해도 되나요?

호환용 이름으로 제공될 수 있지만 MariaDB 문서의 현재 이름은 mariadb-secure-installation입니다. 설치된 실행 파일과 버전 문서를 확인하세요.

정리

mariadb-server를 설치하고 서비스를 활성화한 뒤 초기 보안 도구를 실행하세요. 애플리케이션에는 별도 데이터베이스와 최소 권한 계정을 사용합니다.

원격 접속이 필요하면 특정 사설 주소에서만 수신하고, 계정 Host와 방화벽 원본 주소를 제한하며 TLS와 백업·복구 절차까지 준비해야 합니다.

같은 카테고리의 다른 글
Rocky Linux / 설치된 패키지 확인하는 방법

Rocky Linux / 설치된 패키지 확인하는 방법

Rocky Linux에서 설치된 패키지를 DNF와 RPM으로 확인하는 방법을 설명합니다. 전체 목록, 특정 파일의 소유 패키지, 설치 시각과 변경 검증 방법도 정리합니다.

Rocky Linux / SELinux 끄는 방법

Rocky Linux / SELinux 끄는 방법

Rocky Linux의 SELinux 상태와 모드를 확인하고 차단 원인을 해결하는 방법을 설명합니다. Permissive 전환, 정책 조정과 완전 비활성화 시 주의점도 정리합니다.

Rocky Linux / root 계정으로 ssh 접속 가능하게 설정하는 방법

Rocky Linux / root 계정으로 ssh 접속 가능하게 설정하는 방법

Rocky Linux에서 root SSH 접속이 필요할 때 공개 키로만 허용하는 안전한 절차를 설명합니다. 설정 검사, 접속 제한과 원상 복구 방법도 정리합니다.

Rocky Linux / 호스트네임 변경하는 방법

Rocky Linux / 호스트네임 변경하는 방법

Rocky Linux에서 hostnamectl로 호스트네임을 변경하고 결과를 확인하는 방법을 설명합니다. 이름 해석과 서비스 재시작이 필요한 경우도 함께 살펴봅니다.

Rocky Linux / PostgreSQL 설치하는 방법

Rocky Linux / PostgreSQL 설치하는 방법

Rocky Linux에 PostgreSQL을 설치하고 초기화·서비스 활성화·역할 생성·원격 접속을 구성하는 방법을 설명합니다. pg_hba.conf, SCRAM, 방화벽과 TLS 주의점도 정리합니다.

Rocky Linux / 방화벽 관리하는 방법

Rocky Linux / 방화벽 관리하는 방법

Rocky Linux firewalld에서 영역, 서비스와 포트를 확인·관리하는 방법을 설명합니다. 런타임 시험 후 영구 저장하고 원본 주소를 제한하는 안전한 절차를 정리합니다.

Rocky Linux / DNF 사용법

Rocky Linux / DNF 사용법

Rocky Linux의 DNF로 패키지를 검색·설치·업데이트·삭제하는 방법을 설명합니다. 저장소, 거래 이력, 캐시와 안전한 운영 요령도 함께 정리합니다.

Rocky Linux / MariaDB 설치하는 방법

Rocky Linux / MariaDB 설치하는 방법

Rocky Linux에 MariaDB를 설치하고 초기 보안을 설정하는 방법을 설명합니다. 최소 권한 계정, 원격 수신 주소, 방화벽 원본 제한과 TLS 점검 사항도 정리합니다.

Rocky Linux / GUI 환경 만드는 방법

Rocky Linux / GUI 환경 만드는 방법

Rocky Linux에 GNOME GUI를 설치하고 그래픽 부팅을 설정하는 방법을 설명합니다. Rocky Linux 8·9의 XRDP와 Rocky Linux 10의 GNOME 원격 데스크톱 차이도 정리합니다.

Rocky Linux / 언어 변경하는 방법

Rocky Linux / 언어 변경하는 방법

Rocky Linux에서 localectl과 언어 팩으로 시스템 로케일을 확인·변경하는 방법을 설명합니다. 세션별 변경, LANG·LC_* 우선순위와 한글 깨짐 점검도 정리합니다.