상세 컨텐츠

본문 제목

Rocky 9.5 Linux에 MariaDB 설치 및 초기 설정을 자동화하는 완벽 스크립트

카테고리 없음

by 고지존 2025. 7. 13. 14:51

본문

Rocky Linux 서버 환경에서 MariaDB를 설치하고 초기 설정을 직접 수동으로 진행하는 과정은 시간이 많이 소요되고 반복적입니다. 이 글에서는 Bash 스크립트를 활용하여 MariaDB 설치부터 방화벽 설정, 루트 비밀번호 변경, 불필요한 계정과 테스트 데이터베이스 삭제까지 자동화하는 방법을 자세히 다룹니다.

1. 스크립트 개요

작성한 스크립트는 다음과 같은 단계를 포함합니다:

  • MariaDB 패키지 설치
  • 서비스 활성화 및 실행
  • 방화벽에서 3306 포트 개방
  • MySQL 안전 모드에서 root 비밀번호 초기화
  • 불필요한 계정 및 테스트 DB 삭제

이를 통해 설치 과정에서 발생할 수 있는 오류를 최소화하고, 운영자가 보다 안정적으로 서비스를 시작할 수 있습니다.

2. 설치 및 초기 설정 스크립트 설명

스크립트의 첫 부분에서는 set -e 옵션을 통해 명령 실행 중 오류가 발생하면 즉시 중단하도록 설정합니다. 이후 yum 명령어를 사용하여 MariaDB 서버를 설치하며, 서비스 시작 실패 시 데이터 디렉터리 권한을 복구하고 재시도하는 구조로 구성되어 있습니다.

방화벽 설정은 firewalld가 활성화된 경우에만 3306 포트를 개방하고, 그렇지 않으면 건너뜁니다. 이를 통해 환경별 유연성을 확보할 수 있습니다.

3. 루트 비밀번호 설정

MariaDB 초기 설치 시 루트 계정에는 비밀번호가 설정되어 있지 않습니다. 이를 해결하기 위해 mysqld_safe --skip-grant-tables --skip-networking 명령어로 안전 모드를 실행하여, 외부 접속 없이 비밀번호를 설정할 수 있도록 합니다.

루트 비밀번호는 예제에서 -password123으로 설정되어 있으며, 이후 반드시 운영 환경에 맞는 강력한 비밀번호로 변경해야 합니다.

 

아래는 Rocky Linux에서 MariaDB를 설치하고 초기 설정을 자동화하는 스크립트 예제입니다:

 

저는 mysql.sh 파일로 저장 하였습니다.

vi /root/mysql.sh 파일 내용을 작성하세요 

#!/bin/bash

# 오류 발생 시 중단
set -e

echo "==== MySQL (MariaDB) 설치 및 설정 시작 ===="

# 1. MariaDB 패키지 설치
echo "[1] MariaDB 설치 중..."
yum -y install mariadb-server

# 2. MariaDB 서비스 활성화 및 시작
echo "[2] MariaDB 서비스 시작 중..."
systemctl enable mariadb
systemctl start mariadb || {
    echo "MariaDB 서비스 실행 실패. 데이터 디렉터리 복구 후 재시도..."
    chown -R mysql:mysql /var/lib/mysql
    chmod 700 /var/lib/mysql
    systemctl restart mariadb
}

# 3. 방화벽 설정 (3306 포트 개방)
echo "[3] 방화벽에서 MySQL 포트 개방 중..."
if systemctl is-active --quiet firewalld; then
    firewall-cmd --permanent --add-port=3306/tcp
    firewall-cmd --reload
    echo " 방화벽 설정 완료"
else
    echo " Firewalld가 실행되지 않음. 방화벽 설정을 건너뜁니다."
fi

# 4. MySQL 초기 보안 설정 (root 비밀번호 설정)
echo "[4] MySQL 보안 설정 중..."

# 안전 모드에서 실행 (비밀번호 없이 변경 가능)
echo " MySQL 안전 모드 실행..."
systemctl stop mariadb
mysqld_safe --skip-grant-tables --skip-networking &
sleep 5

# 루트 비밀번호 설정
echo " MySQL 기본 비밀번호: -password123"
mysql -u root <<EOF
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '-password123';
FLUSH PRIVILEGES;
EOF

# 안전 모드 종료 및 정상 모드 재시작
killall mysqld
sleep 3
systemctl start mariadb

# 5. 불필요한 계정 및 테스트 DB 삭제
echo " 불필요한 계정 및 테스트 DB 삭제 중..."
mysql -u root -pserver123 <<EOF
DELETE FROM mysql.user WHERE User='';
DROP DATABASE IF EXISTS test;
FLUSH PRIVILEGES;
EOF

echo "==== MySQL (MariaDB) 설치 및 설정 완료! ===="
echo "MySQL 상태: $(systemctl is-active mariadb)"
echo "MySQL 접속: mysql -u root -password123"

 

스크립트 작성후 mysql.sh 권한설정

스크립트 실행을위해 755 권한 설정 및 실행  

[root@localhost ~]# chmod 755 mysql.sh 
[root@localhost ~]# ./mysql.sh

 

정상적인 실행

설치 완료 후 

[root@localhost ~]# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.5.27-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

 

root 계정으로 정상적으로 로그인을 확인 할수 있습니다.