Skip to content

Commit 17bff79

Browse files
committed
modified: bin/database.sh
1 parent b65acba commit 17bff79

File tree

1 file changed

+40
-5
lines changed

1 file changed

+40
-5
lines changed

Diff for: bin/database.sh

+40-5
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ SQL_PASS=''
88
ANY="'%'"
99
SET_OK=0
1010
EPACE=' '
11+
METHOD=0
1112

1213
echow(){
1314
FLAG=${1}
@@ -19,10 +20,13 @@ help_message(){
1920
echo -e "\033[1mOPTIONS\033[0m"
2021
echow '-D, --domain [DOMAIN_NAME]'
2122
echo "${EPACE}${EPACE}Example: database.sh -D example.com"
22-
echo "${EPACE}${EPACE}Will auto generate Database/username/password for the domain"
23+
echo "${EPACE}${EPACE}Will auto-generate Database/username/password for the domain"
2324
echow '-D, --domain [DOMAIN_NAME] -U, --user [xxx] -P, --password [xxx] -DB, --database [xxx]'
2425
echo "${EPACE}${EPACE}Example: database.sh -D example.com -U USERNAME -P PASSWORD -DB DATABASENAME"
2526
echo "${EPACE}${EPACE}Will create Database/username/password by given"
27+
echow '-R, --delete -DB, --database [xxx] -U, --user [xxx]'
28+
echo "${EPACE}${EPACE}Example: database.sh -r -DB DATABASENAME -U USERNAME"
29+
echo "${EPACE}${EPACE}Will delete the database (require) and username (optional) by given"
2630
echow '-H, --help'
2731
echo "${EPACE}${EPACE}Display help and exit."
2832
exit 0
@@ -79,7 +83,7 @@ EOT
7983
}
8084

8185
check_db_access(){
82-
docker compose exec -T mysql su -c "mysql -uroot -p${MYSQL_ROOT_PASSWORD} -e 'status'" >/dev/null 2>&1
86+
docker compose exec -T mysql su -c "mariadb -uroot --password=${MYSQL_ROOT_PASSWORD} -e 'status'" >/dev/null 2>&1
8387
if [ ${?} != 0 ]; then
8488
echo '[X] DB access failed, please check!'
8589
exit 1
@@ -94,14 +98,38 @@ check_db_exist(){
9498
fi
9599
}
96100

101+
check_db_not_exist(){
102+
docker compose exec -T mysql su -c "test -e /var/lib/mysql/${1}"
103+
if [ ${?} != 0 ]; then
104+
echo "Database ${1} doesn't exist, skip DB deletion!"
105+
exit 0
106+
fi
107+
}
108+
97109
db_setup(){
98-
docker compose exec -T mysql su -c 'mysql -uroot -p${MYSQL_ROOT_PASSWORD} \
110+
docker compose exec -T mysql su -c 'mariadb -uroot --password=${MYSQL_ROOT_PASSWORD} \
99111
-e "CREATE DATABASE '${SQL_DB}';" \
100112
-e "GRANT ALL PRIVILEGES ON '${SQL_DB}'.* TO '${SQL_USER}'@'${ANY}' IDENTIFIED BY '${SQL_PASS}';" \
101113
-e "FLUSH PRIVILEGES;"'
102114
SET_OK=${?}
103115
}
104116

117+
db_delete(){
118+
if [ "${SQL_DB}" == '' ]; then
119+
echo "Database parameter is required!"
120+
exit 0
121+
fi
122+
if [ "${SQL_USER}" == '' ]; then
123+
SQL_USER="${SQL_DB}"
124+
fi
125+
check_db_not_exist ${SQL_DB}
126+
docker compose exec -T mysql su -c 'mariadb -uroot --password=${MYSQL_ROOT_PASSWORD} \
127+
-e "DROP DATABASE IF EXISTS '${SQL_DB}';" \
128+
-e "DROP USER IF EXISTS '${SQL_USER}'@'${ANY}';" \
129+
-e "FLUSH PRIVILEGES;"'
130+
echo "Database ${SQL_DB} and User ${SQL_USER} are deleted!"
131+
}
132+
105133
auto_setup_main(){
106134
check_input ${DOMAIN}
107135
gen_pass
@@ -124,6 +152,10 @@ specify_setup_main(){
124152
}
125153

126154
main(){
155+
if [ ${METHOD} == 1 ]; then
156+
db_delete
157+
exit 0
158+
fi
127159
if [ "${SQL_USER}" != '' ] && [ "${SQL_PASS}" != '' ] && [ "${SQL_DB}" != '' ]; then
128160
specify_setup_main
129161
else
@@ -148,11 +180,14 @@ while [ ! -z "${1}" ]; do
148180
;;
149181
-db | -DB | -database| --database) shift
150182
SQL_DB="${1}"
151-
;;
183+
;;
184+
-[rR] | -del | --del | --delete)
185+
METHOD=1
186+
;;
152187
*)
153188
help_message
154189
;;
155190
esac
156191
shift
157192
done
158-
main
193+
main

0 commit comments

Comments
 (0)