반응형
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
반응형
'스크립트' 카테고리의 다른 글
| 아파치 서버의 로그 저장 스크립트 (0) | 2013.08.14 |
|---|---|
| 아파치 서버의 로그 삭제 스크립트 (0) | 2013.08.14 |
| 리눅스 서버 주요 서비스 자동 점검 및 재시작 스크립트 (0) | 2013.08.14 |
| bind recursive clients 모니터링 (0) | 2013.08.14 |
| 파이션 기본 문법 및 데이터 타입 이해 (0) | 2013.07.24 |