pC.NET

Welcome to oscc.kr



 MySQL 데이터베이스에 DB와 DB사용자
2021-08-01 09:47:20
Hit : 122

작성자 : 피시넷

MySQL 데이터베이스에 DB와 DB사용자를 추가(또는 삭제)하고 권한을 부여하며, 암호를 변경하는 도구를 소개합니다.



시스템에 Perl DBI 모듈이 설치되어 있다면 MySQL과 함께 설치되는 mysql_setpermission 이란 도구를 사용하면 이러한 작업이 가능하겠습니다만, 저 처럼 일 만들기 좋아하면서 반복작업은 죽기보다 싫어하는 분이라면 아래 도구들을 사용해보시기 바랍니다.



#===================================================================#
BIN=/usr/local/mysql/bin
ADMINNAME=mysql
#===================================================================#
각 파일 상단에 존재하는 위와 같은 "BIN"과 "ADMINNAME" 설정부분은 다음과 같은 기준으로 지정하시면 됩니다.

    * BIN : MySQL 실행파일(mysql, mysqladmin 등)들이 위치해 있는 경로
    * ADMINNAME : MySQL 운영자권한이 있는 DB User(root, mysql 등)



mysql.create, mysql.delete, mysql.passwd, mysql.pass 파일에 실행권한을 부여한 후 /usr/local/bin 경로에 넣어두고 사용하시면 편리할 것입니다.



아무것도 입력하지 않고 명령어만을 실행하면 간단한 사용법이 출력됩니다.
===================================================================
$ mysql.create

USAGE : mysql.create [DB/USER] [PASSWORD]
===================================================================



본 도구에서는 기본적으로 DB명과 DB사용자명을 동일한 것으로 보며, 그렇기에 DB와 DB사용자가 동시에 생성 및 삭제되도록 구성되어 있습니다.

예를들어 abcd라는 사용자에게 abcd라는 DB와 1234라는 암호를 부여하고 싶다면 다음과 같이 하시면 됩니다.
===================================================================
$ mysql.create abcd 1234
MySQL Admin Password : ******
$
===================================================================




*************************************
DB와 DB User를 추가하는 도구
*************************************
USAGE : mysql.create [DB/USER] [PASSWORD]

$ cat /usr/local/bin/mysql.create
#!/bin/sh

#===================================================================#
BIN=/usr/local/mysql/bin
ADMINNAME=mysql
#===================================================================#
DB=${1}
USER=${1}
PASS=${2}
#===================================================================#
if [ "x${DB}" = "x" -o "x${PASS}" = "x" ]
        then
        BASENAME=`basename $0`
        echo
        echo USAGE : ${BASENAME} [DB/USER] [PASSWORD]
        echo
        exit
fi
#===================================================================#
echo -n "MySQL Admin Password : "
stty -echo; read ADMINPASS; stty echo; echo
if [ "x${ADMINPASS}" = "x" ]
        then
        echo "Cancel..."
        exit
fi
#===================================================================#
${BIN}/mysql mysql -u ${ADMINNAME} -p${ADMINPASS} -e \
        "INSERT INTO user VALUES(
        'localhost', '${USER}', PASSWORD('${PASS}'),
        'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N'
        )"
${BIN}/mysql mysql -u ${ADMINNAME} -p${ADMINPASS} -e \
        "INSERT INTO db VALUES(
        'localhost', '${DB}', '${USER}',
        'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y'
        )"
${BIN}/mysqladmin -u ${ADMINNAME} -p${ADMINPASS} create ${DB}
${BIN}/mysqladmin -u ${ADMINNAME} -p${ADMINPASS} reload
#===================================================================#




*************************************
DB와 DB User를 삭제하는 도구
*************************************
USAGE : mysql.delete [DB/USER]

$ cat /usr/local/bin/mysql.delete
#!/bin/sh

#===================================================================#
BIN=/usr/local/mysql/bin
ADMINNAME=mysql
#===================================================================#
DB=${1}
USER=${1}
#===================================================================#
if [ "x${DB}" = "x" ]
        then
        BASENAME=`basename $0`
        echo
        echo USAGE : ${BASENAME} [DB/USER]
        echo
        exit
fi
#===================================================================#
echo -n "MySQL Admin Password : "
stty -echo; read ADMINPASS; stty echo; echo
if [ "x${ADMINPASS}" = "x" ]
        then
        echo "Cancel..."
        exit
fi
#===================================================================#
${BIN}/mysql mysql -u ${ADMINNAME} -p${ADMINPASS} -e \
        "DELETE FROM user WHERE User='${USER}'"
${BIN}/mysql mysql -u ${ADMINNAME} -p${ADMINPASS} -e \
        "DELETE FROM db WHERE Db='${DB}'"
${BIN}/mysqladmin -u ${ADMINNAME} -p${ADMINPASS} drop ${DB}
${BIN}/mysqladmin -u ${ADMINNAME} -p${ADMINPASS} reload
#===================================================================#




*************************************
DB User 암호 변경 도구(운영자용)
*************************************
USAGE : mysql.passwd [USER] [NEW-PASSWORD]

$ cat /usr/local/bin/mysql.passwd
#!/bin/sh

#===================================================================#
BIN=/usr/local/mysql/bin
ADMINNAME=mysql
#===================================================================#
USER=${1}
NEWPASS=${2}
#===================================================================#
if [ "x${USER}" = "x" -o "x${NEWPASS}" = "x" ]
        then
        BASENAME=`basename $0`
        echo
        echo USAGE : ${BASENAME} [USER] [NEW-PASSWORD]
        echo
        exit
fi
#===================================================================#
echo -n "MySQL Admin Password : "
stty -echo; read ADMINPASS; stty echo; echo
if [ "x${ADMINPASS}" = "x" ]
        then
        echo "Cancel..."
        exit
fi
#===================================================================#
${BIN}/mysql mysql -u ${ADMINNAME} -p${ADMINPASS} -e \
        "UPDATE user SET Password=PASSWORD('${NEWPASS}')
        WHERE User='${USER}'"
${BIN}/mysqladmin -u ${ADMINNAME} -p${ADMINPASS} reload
#===================================================================#




*************************************
DB User 암호 변경 도구(사용자용)
*************************************
USAGE : mysql.pass [OLD-PASSWORD] [NEW-PASSWORD]

$ cat /usr/local/bin/mysql.pass
#!/bin/sh

#===================================================================#
BIN=/usr/local/mysql/bin
#===================================================================#
USER=`whoami`
OLDPASS=${1}
NEWPASS=${2}
#===================================================================#
if [ "x${OLDPASS}" = "x" -o "x${NEWPASS}" = "x" ]
        then
        BASENAME=`basename $0`
        echo
        echo USAGE : ${BASENAME} [OLD-PASSWORD] [NEW-PASSWORD]
        echo
        exit
fi
#===================================================================#
${BIN}/mysqladmin -u ${USER} -p${OLDPASS} password ${NEWPASS}
#===================================================================#



*출처 :way.co.kr


  피시넷
안녕하세요.
피시넷입니다.

 2830
 41


동일 ID 다중접속 제한
HTML 문서의 PHP 실행 허용을 위한 웹서버 설정

Copyright (C) 1997-2025 All Rights Reserved.

Powered by
DNS server, DNS service 우분투 리눅스 웹서비스 AbuseIPDB Contributor Badge