본문 바로가기
Linux/Shell script

[Shell script] DB별 user 생성 및 sql문 실행

by 개폰지밥 2021. 10. 29.
반응형

| 쉘 스크립트 설명

아래의 쉘 스크립트는 db별로 userdb를 생성한 후에 sql문을 실행하는 쉘 스크립트입니다

case 별로 가능한 db명을 입력 받습니다. 가능한 db명은 쉘 스크립트 안에 Available로 나와있습니다.

처음에 입력받은 생성하고 싶은 user명으로 user, password, db가 동일하게 셋팅됩니다.

그 다음에 실행하고 싶은 sql문이 있는 위치를 입력하시고 sql 파일 명을 입력하시면 sql문이 실행됩니다.

쉘 스크립트가 끝나면 쉘 스크립트로 생성된 user명과 password db로 접속 한후

실행한 sql 결과를 확인하시면 됩니다.

 

현재는 mysql만 만들어져있는 상황입니다.

 

| 테스트 환경

1) Centos 버전

[root@localhost script]# rpm --query centos-release
centos-release-7-6.1810.2.el7.centos.x86_64

 

2) 설치 db 환경

* mysql

mysql –version

 mysql  Ver 14.14 Distrib 5.7.36

- 실행하고 싶은 sql

 

 

| all_db_user_cre.sh 내용

all_db_user_cre.sh
0.00MB

 

 

 

vi all_db_user_cre.sh
#!/bin/bash
echo "Available : mysql mariadb oracle tibero postgresql"
echo -n "what kind of database do you use? : "
        read database
 
########################### mysql ###################################
case "$database" in 'mysql')
        echo -n "do you wanna create user? y|n : "
        read create
 
        if [ $create = "y" ]; then
        echo -n "Enter database user name : "
        read user
        echo -e "\033[47;31m Enter mysql root password \033[0m "
        mysql_config_editor set --login-path=root --host=localhost --user=root --password
        mysql --login-path=root -e "create user '$user'@'%' identified by '$user';" --connect-expired-password
        mysql --login-path=root -e " grant all privileges on $user.* to $user@'%' identified by '$user';" --connect-expired-password
mysql --login-path=root -e "create database $user default character set utf8;" --connect-expired-password
        mysql --login-path=root -e "FLUSH PRIVILEGES;" --connect-expired-password
        echo -e "\033[47;31m user, pw, db명 모두 user명과 같습니다. \033[0m"
        else
                echo "user 생성하지 않습니다"
        fi
 
        echo -n "do you wanna excute sql query? y|n : "
        read excute
 
        if [ $excute = "y" ]; then
        echo -n "Enter where is the sql? ex) /root/script : "
        read where
        echo -n "Enter sql name? ex)test.sql : "
        read sql
        echo -e "\033[47;31m Enter ↑ just created user password \033[0m "
 
        #new user password save
        mysql_config_editor set --login-path=$user --host=localhost --user=$user --password
        #sql excute
        mysql --login-path=$user $user < $where/$sql
        #db table list
        #mysql --login-path=$user -e "select * from information_schema.`TABLES` where TABLE_SCHEMA = '$user';" --connect-expired-password
        else
                echo "sql문 실행하지않습니다."
        fi
 
        ;;
 
'mariadb')
        echo -n "not read"
        ;;
############################# other dbs ################################
 
*)
        echo "not ready" ;;
esac
 
~

 

참고하시라고 사진도 넣겠습니다.

 

| all_db_user_cre.sh shell script 실행해보기

실행전에 실행 할 수 있게 권한명령이 chmod로 실행권한을 줍니다.

 

| shell script 관련 문법 이나 참고사항 정리

추후 추가 하도록 하겠습니다 :)

반응형

댓글