165 lines
4.1 KiB
Bash
Executable File
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
|