From a566001899d0e846b0707c5a6a4353d4de6c17b2 Mon Sep 17 00:00:00 2001 From: KWON Date: Tue, 23 Dec 2025 12:55:31 +0900 Subject: [PATCH] =?UTF-8?q?lxc/setup=5Fmariadb.sh:=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EB=B0=9C=EC=83=9D=20=EC=8B=9C=20=EC=B4=88=EA=B8=B0=ED=99=94=20?= =?UTF-8?q?=EC=98=B5=EC=85=98,=20=EC=82=AC=EC=9A=A9=EC=9E=90=20=EC=9E=AC?= =?UTF-8?q?=EC=83=9D=EC=84=B1=20=EC=98=B5=EC=85=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lxc/setup_mariadb.sh | 94 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 74 insertions(+), 20 deletions(-) diff --git a/lxc/setup_mariadb.sh b/lxc/setup_mariadb.sh index 3e7709c..b444996 100644 --- a/lxc/setup_mariadb.sh +++ b/lxc/setup_mariadb.sh @@ -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