Add MariaDB full removal option and change default values (N for most prompts, Y for same account)

This commit is contained in:
2025-12-23 13:07:14 +09:00
parent 638546a554
commit aaf49c681b

View File

@ -35,37 +35,57 @@ cleanup() {
EXIT_CODE=$? EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ]; then if [ $EXIT_CODE -ne 0 ]; then
echo "" echo ""
echo " MariaDB 설정 중 에러 발생 ($EXIT_CODE)" echo "❌ 설정 중 에러 발생 ($EXIT_CODE)"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
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가 설정되어 있으면 초기화 옵션 제공 case $CLEANUP_OPTION in
if [ -n "$LINUX_USER" ]; then 2)
read_input "초기화하고 다시 시작하시겠습니까? (y/n): " REINIT echo "MariaDB를 완전히 제거합니다..."
if [[ "$REINIT" =~ ^[Yy]$ ]]; then systemctl stop mariadb 2>/dev/null || true
echo "" dnf remove -y mariadb-server 2>/dev/null || true
echo "⚠️ $LINUX_USER 사용자 및 관련 설정을 초기화합니다..." rm -rf /var/lib/mysql /etc/my.cnf.d/50-server.cnf 2>/dev/null || true
echo "✓ MariaDB 완전 제거 완료"
# MariaDB 사용자 삭제 # LINUX_USER가 설정되어 있으면 Linux 사용자/DB 사용자 정리
if [ -n "$DB_USER" ]; then if [ -n "$LINUX_USER" ]; then
mysql -u root -e "DROP USER IF EXISTS '$DB_USER'@'%';" 2>/dev/null || true if [ -n "$DB_USER" ]; then
echo " MariaDB 사용자 삭제 완료" 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 fi
echo ""
echo "초기화가 완료되었습니다. 스크립트를 다시 실행하세요."
;;
1)
echo ""
echo "⚠️ Linux/DB 사용자를 정리합니다..."
# Linux 사용자 홈 디렉토리 포함 삭제 if [ -n "$LINUX_USER" ]; then
if id "$LINUX_USER" &>/dev/null; then if id "$LINUX_USER" &>/dev/null; then
userdel -r "$LINUX_USER" 2>/dev/null || userdel "$LINUX_USER" 2>/dev/null || true userdel -r "$LINUX_USER" 2>/dev/null || userdel "$LINUX_USER" 2>/dev/null || true
echo "✓ Linux 사용자 '$LINUX_USER' 삭제 완료" echo "✓ Linux 사용자 '$LINUX_USER' 삭제 완료"
fi
fi fi
echo "" echo ""
echo "초기화가 완료되었습니다. 스크립트를 다시 실행하세요." echo "초기화가 완료되었습니다. 스크립트를 다시 실행하세요."
else ;;
echo "초기화를 건너뜁니다. 수동으로 정리 후 다시 진행하세요." *)
fi echo "정리를 건너뜁니다. 수동으로 정리 후 다시 진행하세요."
else ;;
echo "스크립트를 다시 실행해 주세요." esac
fi
fi fi
exit $EXIT_CODE exit $EXIT_CODE
} }
@ -129,7 +149,7 @@ if id "$LINUX_USER" &>/dev/null; then
if [[ "$LINUX_PW" != "$LINUX_PW_CONFIRM" ]]; then if [[ "$LINUX_PW" != "$LINUX_PW_CONFIRM" ]]; then
echo "❌ Linux 사용자 비밀번호가 일치하지 않습니다." echo "❌ Linux 사용자 비밀번호가 일치하지 않습니다."
read -p "다시 입력하시겠습니까? (Y/n): " RETRY_PW_2 < /dev/tty 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 if [[ ! "$RETRY_PW_2" =~ ^[Yy]$ ]]; then
echo "비밀번호 입력을 취소했습니다." echo "비밀번호 입력을 취소했습니다."
exit 1 exit 1
@ -168,11 +188,11 @@ else
if [[ "$LINUX_PW" != "$LINUX_PW_CONFIRM" ]]; then if [[ "$LINUX_PW" != "$LINUX_PW_CONFIRM" ]]; then
echo "❌ Linux 사용자 비밀번호가 일치하지 않습니다." echo "❌ Linux 사용자 비밀번호가 일치하지 않습니다."
read -p "다시 입력하시겠습니까? (Y/n): " RETRY_PW < /dev/tty read -p "다시 입력하시겠습니까? (Y/n): " RETRY_PW < /dev/tty
RETRY_PW=${RETRY_PW:-Y} RETRY_PW=${RETRY_PW:-N}
if [[ ! "$RETRY_PW" =~ ^[Yy]$ ]]; then if [[ ! "$RETRY_PW" =~ ^[Yy]$ ]]; then
echo "" echo ""
read -p "스크립트를 다시 시작하시겠습니까? (Y/n): " RESTART_SCRIPT < /dev/tty read -p "스크립트를 다시 시작하시겠습니까? (Y/n): " RESTART_SCRIPT < /dev/tty
RESTART_SCRIPT=${RESTART_SCRIPT:-Y} RESTART_SCRIPT=${RESTART_SCRIPT:-N}
if [[ "$RESTART_SCRIPT" =~ ^[Yy]$ ]]; then if [[ "$RESTART_SCRIPT" =~ ^[Yy]$ ]]; then
exit 1 exit 1
else else
@ -213,11 +233,11 @@ if [[ "$SAME_ACCOUNT" =~ ^[Yy]$ ]]; then
if [[ "$DB_PW" != "$DB_PW_CONFIRM" ]]; then if [[ "$DB_PW" != "$DB_PW_CONFIRM" ]]; then
echo "❌ MariaDB 비밀번호가 일치하지 않습니다." echo "❌ MariaDB 비밀번호가 일치하지 않습니다."
read -p "다시 입력하시겠습니까? (Y/n): " RETRY_DB_PW < /dev/tty 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 if [[ ! "$RETRY_DB_PW" =~ ^[Yy]$ ]]; then
echo "" echo ""
read -p "스크립트를 다시 시작하시겠습니까? (Y/n): " RESTART_SCRIPT2 < /dev/tty read -p "스크립트를 다시 시작하시겠습니까? (Y/n): " RESTART_SCRIPT2 < /dev/tty
RESTART_SCRIPT2=${RESTART_SCRIPT2:-Y} RESTART_SCRIPT2=${RESTART_SCRIPT2:-N}
if [[ "$RESTART_SCRIPT2" =~ ^[Yy]$ ]]; then if [[ "$RESTART_SCRIPT2" =~ ^[Yy]$ ]]; then
exit 1 exit 1
else else
@ -250,11 +270,11 @@ else
if [[ "$DB_PW" != "$DB_PW_CONFIRM" ]]; then if [[ "$DB_PW" != "$DB_PW_CONFIRM" ]]; then
echo "❌ MariaDB 비밀번호가 일치하지 않습니다." echo "❌ MariaDB 비밀번호가 일치하지 않습니다."
read -p "다시 입력하시겠습니까? (Y/n): " RETRY_DB_PW2 < /dev/tty 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 if [[ ! "$RETRY_DB_PW2" =~ ^[Yy]$ ]]; then
echo "" echo ""
read -p "스크립트를 다시 시작하시겠습니까? (Y/n): " RESTART_SCRIPT3 < /dev/tty read -p "스크립트를 다시 시작하시겠습니까? (Y/n): " RESTART_SCRIPT3 < /dev/tty
RESTART_SCRIPT3=${RESTART_SCRIPT3:-Y} RESTART_SCRIPT3=${RESTART_SCRIPT3:-N}
if [[ "$RESTART_SCRIPT3" =~ ^[Yy]$ ]]; then if [[ "$RESTART_SCRIPT3" =~ ^[Yy]$ ]]; then
exit 1 exit 1
else else
@ -341,7 +361,12 @@ chown "$LINUX_USER:$LINUX_USER" "$USER_HOME/.vimrc" "$USER_HOME/.bashrc" 2>/dev/
# ------------------------------------------------- # -------------------------------------------------
echo "MariaDB 10.6 설치 중..." echo "MariaDB 10.6 설치 중..."
dnf module reset mariadb -y 2>/dev/null || true 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; } dnf install -y mariadb-server || { echo "❌ MariaDB 설치 실패"; exit 1; }
systemctl enable --now mariadb || { 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 if [ "$EXISTING_USER" -gt 0 ]; then
echo "⚠️ DB 사용자 '$DB_USER'이(가) 이미 존재합니다." echo "⚠️ DB 사용자 '$DB_USER'이(가) 이미 존재합니다."
read -p "기존 사용자의 비밀번호를 변경하시겠습니까? (Y/n): " UPDATE_PW < /dev/tty read -p "기존 사용자의 비밀번호를 변경하시겠습니까? (Y/n): " UPDATE_PW < /dev/tty
UPDATE_PW=${UPDATE_PW:-Y} UPDATE_PW=${UPDATE_PW:-N}
if [[ "$UPDATE_PW" =~ ^[Yy]$ ]]; then if [[ "$UPDATE_PW" =~ ^[Yy]$ ]]; then
mysql -u root <<MYSQL_UPDATE mysql -u root <<MYSQL_UPDATE
ALTER USER '$DB_USER'@'%' IDENTIFIED BY '$DB_PW'; ALTER USER '$DB_USER'@'%' IDENTIFIED BY '$DB_PW';