From aaf49c681b7408d11cd95f4ab3a1acb4ebfbd68b Mon Sep 17 00:00:00 2001 From: KWON Date: Tue, 23 Dec 2025 13:07:14 +0900 Subject: [PATCH] Add MariaDB full removal option and change default values (N for most prompts, Y for same account) --- lxc/setup_mariadb.sh | 85 ++++++++++++++++++++++++++++---------------- 1 file changed, 55 insertions(+), 30 deletions(-) diff --git a/lxc/setup_mariadb.sh b/lxc/setup_mariadb.sh index fbcecfb..948bbb3 100644 --- a/lxc/setup_mariadb.sh +++ b/lxc/setup_mariadb.sh @@ -35,37 +35,57 @@ cleanup() { EXIT_CODE=$? if [ $EXIT_CODE -ne 0 ]; then echo "" - echo "❌ MariaDB 설정 중 에러 발생 ($EXIT_CODE)" + echo "❌ 설정 중 에러 발생 ($EXIT_CODE)" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" + echo "선택 사항:" + echo " 1) Linux/DB 사용자만 정리하고 다시 시작" + echo " 2) MariaDB 완전 제거 후 다시 시작 (권장)" + echo " 3) 취소" + echo "" + read_input "선택 (1, 2 또는 3): " CLEANUP_OPTION + CLEANUP_OPTION=${CLEANUP_OPTION:-3} - # LINUX_USER가 설정되어 있으면 초기화 옵션 제공 - if [ -n "$LINUX_USER" ]; then - read_input "초기화하고 다시 시작하시겠습니까? (y/n): " REINIT - if [[ "$REINIT" =~ ^[Yy]$ ]]; then - echo "" - echo "⚠️ $LINUX_USER 사용자 및 관련 설정을 초기화합니다..." + case $CLEANUP_OPTION in + 2) + echo "MariaDB를 완전히 제거합니다..." + systemctl stop mariadb 2>/dev/null || true + dnf remove -y mariadb-server 2>/dev/null || true + rm -rf /var/lib/mysql /etc/my.cnf.d/50-server.cnf 2>/dev/null || true + echo "✓ MariaDB 완전 제거 완료" - # MariaDB 사용자 삭제 - if [ -n "$DB_USER" ]; then - mysql -u root -e "DROP USER IF EXISTS '$DB_USER'@'%';" 2>/dev/null || true - echo "✓ MariaDB 사용자 삭제 완료" + # LINUX_USER가 설정되어 있으면 Linux 사용자/DB 사용자 정리 + if [ -n "$LINUX_USER" ]; then + if [ -n "$DB_USER" ]; then + echo "⚠️ MariaDB 사용자 '$DB_USER' 정리 (수동으로 필요할 수 있음)" + fi + + 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 fi + echo "" + echo "초기화가 완료되었습니다. 스크립트를 다시 실행하세요." + ;; + 1) + echo "" + echo "⚠️ Linux/DB 사용자를 정리합니다..." - # 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' 삭제 완료" + if [ -n "$LINUX_USER" ]; then + 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 fi echo "" echo "초기화가 완료되었습니다. 스크립트를 다시 실행하세요." - else - echo "초기화를 건너뜁니다. 수동으로 정리 후 다시 진행하세요." - fi - else - echo "스크립트를 다시 실행해 주세요." - fi + ;; + *) + echo "정리를 건너뜁니다. 수동으로 정리 후 다시 진행하세요." + ;; + esac fi exit $EXIT_CODE } @@ -129,7 +149,7 @@ if id "$LINUX_USER" &>/dev/null; then if [[ "$LINUX_PW" != "$LINUX_PW_CONFIRM" ]]; then echo "❌ Linux 사용자 비밀번호가 일치하지 않습니다." read -p "다시 입력하시겠습니까? (Y/n): " RETRY_PW_2 < /dev/tty - RETRY_PW_2=${RETRY_PW_2:-Y} + RETRY_PW_2=${RETRY_PW_2:-N} if [[ ! "$RETRY_PW_2" =~ ^[Yy]$ ]]; then echo "비밀번호 입력을 취소했습니다." exit 1 @@ -168,11 +188,11 @@ else if [[ "$LINUX_PW" != "$LINUX_PW_CONFIRM" ]]; then echo "❌ Linux 사용자 비밀번호가 일치하지 않습니다." read -p "다시 입력하시겠습니까? (Y/n): " RETRY_PW < /dev/tty - RETRY_PW=${RETRY_PW:-Y} + RETRY_PW=${RETRY_PW:-N} if [[ ! "$RETRY_PW" =~ ^[Yy]$ ]]; then echo "" read -p "스크립트를 다시 시작하시겠습니까? (Y/n): " RESTART_SCRIPT < /dev/tty - RESTART_SCRIPT=${RESTART_SCRIPT:-Y} + RESTART_SCRIPT=${RESTART_SCRIPT:-N} if [[ "$RESTART_SCRIPT" =~ ^[Yy]$ ]]; then exit 1 else @@ -213,11 +233,11 @@ if [[ "$SAME_ACCOUNT" =~ ^[Yy]$ ]]; then if [[ "$DB_PW" != "$DB_PW_CONFIRM" ]]; then echo "❌ MariaDB 비밀번호가 일치하지 않습니다." read -p "다시 입력하시겠습니까? (Y/n): " RETRY_DB_PW < /dev/tty - RETRY_DB_PW=${RETRY_DB_PW:-Y} + RETRY_DB_PW=${RETRY_DB_PW:-N} if [[ ! "$RETRY_DB_PW" =~ ^[Yy]$ ]]; then echo "" read -p "스크립트를 다시 시작하시겠습니까? (Y/n): " RESTART_SCRIPT2 < /dev/tty - RESTART_SCRIPT2=${RESTART_SCRIPT2:-Y} + RESTART_SCRIPT2=${RESTART_SCRIPT2:-N} if [[ "$RESTART_SCRIPT2" =~ ^[Yy]$ ]]; then exit 1 else @@ -250,11 +270,11 @@ else if [[ "$DB_PW" != "$DB_PW_CONFIRM" ]]; then echo "❌ MariaDB 비밀번호가 일치하지 않습니다." read -p "다시 입력하시겠습니까? (Y/n): " RETRY_DB_PW2 < /dev/tty - RETRY_DB_PW2=${RETRY_DB_PW2:-Y} + RETRY_DB_PW2=${RETRY_DB_PW2:-N} if [[ ! "$RETRY_DB_PW2" =~ ^[Yy]$ ]]; then echo "" read -p "스크립트를 다시 시작하시겠습니까? (Y/n): " RESTART_SCRIPT3 < /dev/tty - RESTART_SCRIPT3=${RESTART_SCRIPT3:-Y} + RESTART_SCRIPT3=${RESTART_SCRIPT3:-N} if [[ "$RESTART_SCRIPT3" =~ ^[Yy]$ ]]; then exit 1 else @@ -341,7 +361,12 @@ chown "$LINUX_USER:$LINUX_USER" "$USER_HOME/.vimrc" "$USER_HOME/.bashrc" 2>/dev/ # ------------------------------------------------- echo "MariaDB 10.6 설치 중..." dnf module reset mariadb -y 2>/dev/null || true -dnf module enable mariadb:10.6 -y || { echo "❌ MariaDB 10.6 활성화 실패"; exit 1; } + +# MariaDB 모듈 활성화 (실패 시 일반 설치 시도) +if ! dnf module enable mariadb:10.6 -y 2>/dev/null; then + echo "⚠️ MariaDB 10.6 모듈이 없습니다. 기본 MariaDB를 설치합니다..." +fi + dnf install -y mariadb-server || { echo "❌ MariaDB 설치 실패"; exit 1; } systemctl enable --now mariadb || { echo "❌ MariaDB 서비스 활성화 실패"; exit 1; } @@ -380,7 +405,7 @@ EXISTING_USER=$(mysql -u root -se "SELECT COUNT(*) FROM mysql.user WHERE User='$ if [ "$EXISTING_USER" -gt 0 ]; then echo "⚠️ DB 사용자 '$DB_USER'이(가) 이미 존재합니다." read -p "기존 사용자의 비밀번호를 변경하시겠습니까? (Y/n): " UPDATE_PW < /dev/tty - UPDATE_PW=${UPDATE_PW:-Y} + UPDATE_PW=${UPDATE_PW:-N} if [[ "$UPDATE_PW" =~ ^[Yy]$ ]]; then mysql -u root <