#!/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 dump.sql${END} Export database to dump.sql" echo -e "${WHT}./db ${BOLDBLU}-i${BLU} dbname dump.sql${END} Import dump.sql into database" 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 -e ^${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 -e ^${1}$)${END}" } function create_all() { create_database $1 create_user $1 } # BACKUP function export_database() { mysqldump -u${DBUSER} -p${DBPASS} $1 > $2 ls -l $2 } 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 $3 exit ;; -i) import_database $2 $3 exit ;; *) usage exit ;; esac done usage