MySQL 사용자 계정 생성
MySQL 5
MySql5.7 까지만 하더라도 아래와 같이 계정 생성과 동시에 DB에 권한을 부여할 수 있었다.
mysql> grant all privileges on DB이름.* to 계정ID@'%' identified by '계정비밀번호' with grant option; mysql> flush privileges ;
MySQL 8
그러나 MySQL 8 에서는 해당 명령어가 동작하지 않고, 계정 생성과 DB 권한 부여를 각각 해줘야 한다.
mysql> create user 계정ID@'%' identified by '계정비밀번호' ; mysql> grant all privileges on DB이름.* to 계정ID@'%' with grant option; mysql> flush privileges;
위 작업을 한방에 할 수 있도록 스크립트를 생성하면 아래와 같다.
#!/bin/bash
# 사용법: ./script.sh username password
# 사용자 입력 확인
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <username> <password>"
exit 1
fi
# 변수 설정
USERNAME=$1
PASSWORD=$2
DBNAME=$USERNAME
# MySQL root 사용자 정보 (필요에 따라 수정)
MYSQL_ROOT_USER="root"
MYSQL_ROOT_PASS="u:>+wjfek0Iy"
# MySQL 명령 실행
mysql -u $MYSQL_ROOT_USER -p$MYSQL_ROOT_PASS <<EOF
-- 데이터베이스 생성
CREATE DATABASE IF NOT EXISTS \`$DBNAME\`;
-- 사용자 생성
CREATE USER IF NOT EXISTS '$USERNAME'@'%' IDENTIFIED BY '$PASSWORD';
-- 권한 부여
GRANT ALL PRIVILEGES ON \`$DBNAME\`.* TO '$USERNAME'@'%';
-- 권한 적용
FLUSH PRIVILEGES;
EOF
if [ $? -eq 0 ]; then
echo "Database '$DBNAME' and user '$USERNAME' created successfully with all privileges."
else
echo "Failed to create database or user. Check your MySQL root credentials and settings."
exit 1
fi