본문 바로가기

스크립트

MySQL/MariaDB 데이터베이스 및 계정 자동 생성 스크립트

반응형

MySQL/MariaDB 데이터베이스 및 계정 자동 생성 스크립트

운영 환경에서 신규 서비스 구축 시 데이터베이스 생성 + 계정 생성 + 권한 부여 작업은 자주 발생합니다.

반복 작업을 수동으로 처리하면 오타, 권한 누락, 비밀번호 실수 등이 발생할 수 있습니다.

 

스크립트 작성

vim db_account.sh
#!/bin/bash

# ==================================
# DB / 계정 자동 생성 스크립트
# MySQL / MariaDB 공용
# ==================================

while true
do
    echo ""
    read -p "DB Name     : " DB_NAME
    read -p "DB User ID  : " DB_USER
    read -s -p "DB Pass     : " DB_PASS
    echo ""

    echo ""
    echo "==================================="
    echo " DB Name    : $DB_NAME"
    echo " DB User    : $DB_USER"
    echo "==================================="
    echo ""

    read -p "Is this correct? [y/n] : " CONFIRM

    if [[ "$CONFIRM" == "y" ]]; then
        break
    fi
done

cat > /tmp/create_db.sql <<EOF
CREATE DATABASE \`$DB_NAME\`
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

CREATE USER '$DB_USER'@'localhost'
IDENTIFIED BY '$DB_PASS';

GRANT ALL PRIVILEGES ON \`$DB_NAME\`.* TO '$DB_USER'@'localhost';

FLUSH PRIVILEGES;
EOF

echo ""
echo "SQL Script Generated: /tmp/create_db.sql"
echo ""

mysql -u root -p < /tmp/create_db.sql

echo ""
echo "Database and account created successfully."

실행 권한 부여

chmod +x db_account.sh

실행 방법

./db_account.sh
DB Name     : appdb
DB User ID  : appuser
DB Pass     : ********

DB Name    : appdb
DB User    : appuser

Is this correct? [y/n] : y
728x90

생성되는 SQL 예시

CREATE DATABASE appdb
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

CREATE USER 'appuser'@'localhost'
IDENTIFIED BY 'StrongPass123';

GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost';

FLUSH PRIVILEGES;

계정 접속 테스트

mysql -u appuser -p appdb

실무 권장 보안 설정

localhost 전용 계정

'user'@'localhost'
  • 서버 내부 애플리케이션 전용 계정에 적합합니다.

원격 접속 허용 계정

'user'@'%'
  • 외부 WAS 서버 연동 시 사용합니다.

권한 최소화 예시

  • 전체 권한 대신 필요한 권한만 부여할 수도 있습니다.
GRANT SELECT, INSERT, UPDATE, DELETE
ON appdb.* TO 'appuser'@'localhost';

 

728x90
반응형