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와 백업·복구 절차까지 준비해야 합니다.









