lxc/setup_mariadb.sh: 오류 발생 시 초기화 옵션, 사용자 재생성 옵션 추가
This commit is contained in:
@ -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 "❌ 다른 사용자명을 입력하세요."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# 비밀번호 입력 (기존 사용자인 경우 생략 가능)
|
||||
if ! id "$LINUX_USER" &>/dev/null; then
|
||||
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
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user