2023-07-24 15:01:21 +03:00

165 lines
4.1 KiB
Bash
Executable File

#!/bin/bash
RED="\e[0;31m"
GRN="\e[0;32m"
BLU="\e[0;34m"
WHT="\e[0;97m"
BOLDRED="\e[1;31m"
BOLDGRN="\e[1;32m"
BOLDBLU="\e[1;34m"
BOLDWHT="\e[1;97m"
END="\e[00m"
DBUSER="root"
DBPASS="1234"
function usage() {
echo
echo -e " ${BOLDWHT}db${END} v1.0 is a simple MySQL tool"
echo
echo -e " 🌈 \e[1mList\e[0m"
echo -e "${WHT}./db ${BOLDBLU}-lu${END} List users"
echo -e "${WHT}./db ${BOLDBLU}-ld${END} List databases"
echo -e "${WHT}./db ${BOLDBLU}-lt${BLU} dbname${END} List tables from dbname"
echo
echo -e " 🔥 \e[1mDelete\e[0m"
echo -e "${WHT}./db ${BOLDRED}-d${RED} xzy${END} Delete user & database"
echo -e "${WHT}./db ${BOLDRED}-du${RED} xzy${END} Delete user"
echo -e "${WHT}./db ${BOLDRED}-dd${RED} xzy${END} Delete database"
echo
echo -e " 🌱 \e[1mCreate\e[0m"
echo -e "${WHT}./db ${BOLDGRN}-c${GRN} xzy${END} Create user & database"
echo -e "${WHT}./db ${BOLDGRN}-cu${GRN} xzy${END} Create user"
echo -e "${WHT}./db ${BOLDGRN}-cd${GRN} xzy${END} Create database"
echo
echo -e " 🛟 \e[1mBackup\e[0m"
echo -e "${WHT}./db ${BOLDBLU}-e${BLU} dbname${END} Export database to dbname.sql"
echo -e "${WHT}./db ${BOLDBLU}-i${BLU} dbname dump.sql${END} Import dump.sql into dbname"
echo
exit
}
# List
function list_databases() {
mysql -u${DBUSER} -p${DBPASS} -Nse 'show databases' | grep -Ev '(information_schema|mysql|performance_schema)'
}
function list_users() {
mysql -u${DBUSER} -p${DBPASS} -Nse "SELECT user FROM mysql.user WHERE user NOT IN ('root','mysql','mariadb.sys','mysql.sys')"
}
function list_tables() {
echo -e "Database ${BOLDBLU}${1}${END} contains ${BOLDWHT}$(mysql -u${DBUSER} -p${DBPASS} -Nse "use $1; show tables;" | wc -l)${END} tables"
}
# DELETE
function delete_database() {
mysql -u${DBUSER} -p${DBPASS} -e "drop database $1"
list_databases | grep -e "^$1$"
}
function delete_user() {
mysql -u${DBUSER} -p${DBPASS} -e "DROP USER '$1'@'localhost'"
list_users | grep -e "^$1$"
}
function delete_all() {
delete_user $1
delete_database $1
}
# CREATE
function create_database() {
mysql -u${DBUSER} -p${DBPASS} -e "create database $1"
echo -e "Database created: ${BOLDGRN}$(list_databases | grep $1)${END}"
}
function create_user() {
mysql -u${DBUSER} -p${DBPASS} -e "CREATE USER $1@localhost IDENTIFIED BY '1234'"
mysql -u${DBUSER} -p${DBPASS} -e "GRANT ALL ON $1.* TO $1@localhost"
echo -e "User created: ${BOLDGRN}$(list_users | grep $1)${END}"
}
function create_all() {
create_database $1
create_user $1
}
# BACKUP
function export_database() {
mysqldump -u${DBUSER} -p${DBPASS} $1 > $1.sql
ls -l $1.sql
}
function import_database() {
echo -e "Before import database ${BOLDBLU}${1}${END} contains ${BOLDWHT}$(mysql -u${DBUSER} -p${DBPASS} -Nse "use $1; show tables;" | wc -l)${END} tables"
mysql -u${DBUSER} -p${DBPASS} $1 < $2
echo -e "After import database ${BOLDBLU}${1}${END} contains ${BOLDWHT}$(mysql -u${DBUSER} -p${DBPASS} -Nse "use $1; show tables;" | wc -l)${END} tables"
systemctl restart mysql
}
for i in "$@"
do
case $i in
-h)
usage
exit
;;
-lu)
list_users
exit
;;
-ld)
list_databases
exit
;;
-lt)
list_tables $2
exit
;;
-dd)
delete_database $2
exit
;;
-du)
delete_user $2
exit
;;
-d)
delete_all $2
exit
;;
-cd)
create_database $2
exit
;;
-cu)
create_user $2
exit
;;
-c)
create_all $2
exit
;;
-e)
export_database $2
exit
;;
-i)
import_database $2 $3
exit
;;
*)
usage
exit
;;
esac
done
usage