lxc/setup_mariadb.sh: 오류 발생 시 초기화 옵션, 사용자 재생성 옵션 추가

This commit is contained in:
2025-12-23 12:55:31 +09:00
parent ae3a2526e0
commit a566001899

View File

@ -1,6 +1,6 @@
#!/bin/bash
# Rocky Linux 9 LXC - MariaDB 설치 및 초기 설정
# 오류 처리: 중단 시 부분 설정 방지, 중복 사용자 처리 포함
# 오류 발생 시 초기화 옵션 제공, 중복 사용자 처리 포함
# root 계정에서 실행
# Linux / DB 계정 통합 여부 선택 가능
# dotfiles는 git에서 다운로드
@ -10,14 +10,43 @@ set -euo pipefail
# dotfiles 저장소
DOTFILES_BASE_URL="https://git.siane.kr/firstgarden/cafe24-testserver/raw/branch/main"
# 오류 처리 함
# 전역 변
LINUX_USER=""
DB_USER=""
# 오류 처리 및 초기화 함수
cleanup() {
EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ]; then
echo ""
echo "❌ MariaDB 설정 중 에러 발생 ($EXIT_CODE)"
echo "부분적으로 설정된 데이터가 있을 수 있습니다."
echo "다시 실행할 때 기존 사용자/데이터베이스는 건너뛰어집니다."
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
if [ -n "$LINUX_USER" ]; then
read -p "초기화하고 다시 시작하시겠습니까? (y/n): " REINIT
if [[ "$REINIT" =~ ^[Yy]$ ]]; then
echo ""
echo "⚠️ $LINUX_USER 사용자 및 관련 설정을 초기화합니다..."
# MariaDB 사용자 삭제
if [ -n "$DB_USER" ]; then
mysql -u root -e "DROP USER IF EXISTS '$DB_USER'@'%';" 2>/dev/null || true
echo "✓ MariaDB 사용자 삭제 완료"
fi
# Linux 사용자 홈 디렉토리 포함 삭제
if id "$LINUX_USER" &>/dev/null; then
userdel -r "$LINUX_USER" 2>/dev/null || userdel "$LINUX_USER" 2>/dev/null || true
echo "✓ Linux 사용자 '$LINUX_USER' 삭제 완료"
fi
echo ""
echo "초기화가 완료되었습니다. 스크립트를 다시 실행하세요."
else
echo "초기화를 건너뜁니다."
fi
fi
fi
exit $EXIT_CODE
}
@ -46,19 +75,48 @@ echo "✓ 필수 패키지 설치 완료"
# -------------------------------------------------
read -p "Linux 사용자 이름: " LINUX_USER
# 사용자 존재 확인
# 사용자 존재 확인 및 재생성 옵션
if id "$LINUX_USER" &>/dev/null; then
echo "⚠️ 사용자 '$LINUX_USER'이(가) 이미 존재합니다."
read -p "기존 사용자를 사용하시겠습니까? (Y/n): " USE_EXISTING
USE_EXISTING=${USE_EXISTING:-Y}
if [[ ! "$USE_EXISTING" =~ ^[Yy]$ ]]; then
echo "❌ 다른 사용자명을 입력하세요."
echo ""
echo "선택 사항:"
echo " 1) 기존 사용자 사용 (비밀번호는 변경하지 않음)"
echo " 2) 사용자 삭제 후 재생성 (홈 디렉토리 포함 삭제)"
echo ""
read -p "선택 (1 또는 2): " USER_ACTION
case $USER_ACTION in
2)
read -p "정말로 '$LINUX_USER'을(를) 삭제하고 재생성하시겠습니까? (y/n): " CONFIRM
if [[ "$CONFIRM" =~ ^[Yy]$ ]]; then
echo "사용자 삭제 중..."
userdel -r "$LINUX_USER" 2>/dev/null || userdel "$LINUX_USER" 2>/dev/null || true
echo "✓ 사용자 '$LINUX_USER' 삭제 완료"
# 새 비밀번호 입력
read -s -p "새로운 Linux 사용자 비밀번호: " LINUX_PW
echo ""
read -s -p "Linux 사용자 비밀번호 확인: " LINUX_PW_CONFIRM
echo ""
if [[ "$LINUX_PW" != "$LINUX_PW_CONFIRM" ]]; then
echo "❌ Linux 사용자 비밀번호가 일치하지 않습니다."
exit 1
fi
fi
# 비밀번호 입력 (기존 사용자인 경우 생략 가능)
if ! id "$LINUX_USER" &>/dev/null; then
CREATE_USER=true
else
echo "❌ 사용자 삭제를 취소했습니다. 다른 사용자명을 입력하세요."
exit 1
fi
;;
1|*)
echo " 기존 사용자를 사용합니다: $LINUX_USER"
CREATE_USER=false
LINUX_PW=""
;;
esac
else
# 새 사용자 생성
read -s -p "Linux 사용자 비밀번호: " LINUX_PW
echo ""
read -s -p "Linux 사용자 비밀번호 확인: " LINUX_PW_CONFIRM
@ -69,10 +127,6 @@ if ! id "$LINUX_USER" &>/dev/null; then
exit 1
fi
CREATE_USER=true
else
echo " 기존 사용자를 사용합니다: $LINUX_USER"
CREATE_USER=false
LINUX_PW=""
fi
# -------------------------------------------------
@ -98,7 +152,7 @@ else
echo ""
if [[ "$DB_PW" != "$DB_PW_CONFIRM" ]]; then
echo "MariaDB 비밀번호가 일치하지 않습니다."
echo "MariaDB 비밀번호가 일치하지 않습니다."
exit 1
fi
fi