Browse Source

feat: create scripts to handle customers and databases

master
Dennis Buchhorn 2 years ago
parent
commit
9608a58f3d
5 changed files with 386 additions and 28 deletions
  1. +26
    -28
      create_customer
  2. +94
    -0
      create_database_for_customer
  3. +108
    -0
      delete_database_from_customer
  4. +65
    -0
      get_customers
  5. +93
    -0
      get_databases_from_customer

+ 26
- 28
create_customer View File

@ -1,7 +1,7 @@
#!/bin/bash
echo "####################################################################"
echo "# docker_mariadb_create_customer_script #"
echo "# docker_mariadb create_customer script #"
echo "# Dennis Buchhorn - bucde@b-eit.de #"
echo "####################################################################"
echo "# WARNING: password is plain text! #"
@ -13,42 +13,40 @@ MARIADB_CONTAINER_NAME=""
MARIADB_ROOT_PASSWORD=""
MARIADB_CUSTOMER_NAME=""
MARIADB_CUSTOMER_PASSWORD=""
MARIADB_CUSTOMER_CHARSET=""
MARIADB_CUSTOMER_COLLATE=""
read -p "Enter mariadb container name: " MARIADB_CONTAINER_NAME
TMP=$(docker container ls --format "{{.Names}}")
for ENTRY in $TMP; do
CONTAINER_LIST+=($ENTRY)
done
if [[ ${#CONTAINER_LIST[@]} > 0 ]]; then
echo "List of all running containers:"
for I in ${!CONTAINER_LIST[@]}; do
echo " Number [$I]: ${CONTAINER_LIST[$I]}"
done
else
echo "No containers running!"
exit 1
fi
read -p "Enter mariadb container number: " TMP
MARIADB_CONTAINER_NAME="${CONTAINER_LIST[$TMP]}"
read -p "Enter mariadb root password: " MARIADB_ROOT_PASSWORD
read -p "Enter customer name: " MARIADB_CUSTOMER_NAME
read -p "Enter customer password: " MARIADB_CUSTOMER_PASSWORD
read -p "Enter character set (leave empty for default): " MARIADB_CUSTOMER_CHARSET
read -p "Enter collate (leave empty for default): " MARIADB_CUSTOMER_COLLATE
MARIADB_CUSTOMER_DBNAME="${MARIADB_CUSTOMER_NAME}db"
rm -f tmp
touch tmp
echo "CREATE USER '"$MARIADB_CUSTOMER_NAME"'@'%' IDENTIFIED BY '"$MARIADB_CUSTOMER_PASSWORD"';" >> tmp
if [ -z "$MARIADB_CUSTOMER_CHARSET" ]; then
if [ -z "$MARIADB_CUSTOMER_COLLATE" ]; then
echo "CREATE DATABASE "$MARIADB_CUSTOMER_DBNAME";" >> tmp
else
echo "CREATE DATABASE "$MARIADB_CUSTOMER_DBNAME" COLLATE '"$MARIADB_CUSTOMER_COLLATE"';" >> tmp
fi
else
if [ -z "$MARIADB_CUSTOMER_COLLATE" ]; then
echo "CREATE DATABASE "$MARIADB_CUSTOMER_DBNAME" CHARACTER SET '"$MARIADB_CUSTOMER_CHARSET"';" >> tmp
else
echo "CREATE DATABASE "$MARIADB_CUSTOMER_DBNAME" CHARACTER SET '"$MARIADB_CUSTOMER_CHARSET"' COLLATE '"$MARIADB_CUSTOMER_COLLATE"';" >> tmp
fi
fi
echo "GRANT ALL PRIVILEGES ON "$MARIADB_CUSTOMER_DBNAME".* To '"$MARIADB_CUSTOMER_NAME"'@'%' IDENTIFIED BY '"$MARIADB_CUSTOMER_PASSWORD"';" >> tmp
echo "FLUSH PRIVILEGES;" >> tmp
echo "CREATE USER '$MARIADB_CUSTOMER_NAME'@'%' IDENTIFIED BY '$MARIADB_CUSTOMER_PASSWORD';" >> tmp
cat tmp | docker exec -i $MARIADB_CONTAINER_NAME mysql -uroot -p$MARIADB_ROOT_PASSWORD
TMP=$(cat tmp | docker exec -i $MARIADB_CONTAINER_NAME mysql -uroot -p$MARIADB_ROOT_PASSWORD -BN)
rm -f tmp
echo "Database '"$MARIADB_CUSTOMER_DBNAME"' with user '"$MARIADB_CUSTOMER_NAME"' created."
echo "Done!"

+ 94
- 0
create_database_for_customer View File

@ -0,0 +1,94 @@
#!/bin/bash
echo "####################################################################"
echo "# docker_mariadb create_database_for_customer script #"
echo "# Dennis Buchhorn - bucde@b-eit.de #"
echo "####################################################################"
echo "# WARNING: password is plain text! #"
#echo "# #"
echo "####################################################################"
echo ""
MARIADB_CONTAINER_NAME=""
MARIADB_ROOT_PASSWORD=""
MARIADB_DATABASE_NAME=""
MARIADB_DATABASE_CHARACTER_SET=""
MARIADB_DATABASE_COLLATE=""
TMP=$(docker container ls --format "{{.Names}}")
for ENTRY in $TMP; do
CONTAINER_LIST+=($ENTRY)
done
if [[ ${#CONTAINER_LIST[@]} > 0 ]]; then
echo "List of all running containers:"
for I in ${!CONTAINER_LIST[@]}; do
echo " Number [$I]: ${CONTAINER_LIST[$I]}"
done
else
echo "No containers running!"
exit 1
fi
read -p "Enter mariadb container number: " TMP
MARIADB_CONTAINER_NAME="${CONTAINER_LIST[$TMP]}"
read -p "Enter mariadb root password: " MARIADB_ROOT_PASSWORD
rm -f tmp
touch tmp
echo "SELECT user FROM mysql.user;" >> tmp
TMP=$(cat tmp | docker exec -i $MARIADB_CONTAINER_NAME mysql -uroot -p$MARIADB_ROOT_PASSWORD -BN)
rm -f tmp
for ENTRY in $TMP; do
if ! [[ $ENTRY == "root" || $ENTRY == "mariadb.sys" ]]; then
CUSTOMER_LIST+=($ENTRY)
fi
done
if [[ ${CUSTOMER_LIST[@]} > 0 ]]; then
echo "List of all customers:"
for I in ${!CUSTOMER_LIST[@]}; do
echo " Number [$I]: ${CUSTOMER_LIST[$I]}"
done
else
echo "No customers!"
exit 1
fi
read -p "Enter customer number: " TMP
MARIADB_CUSTOMER_NAME="${CUSTOMER_LIST[$TMP]}"
read -p "Enter database name: " MARIADB_DATABASE_NAME
read -p "Enter character set (leave empty for default (utf8)): " MARIADB_DATABASE_CHARACTER_SET
read -p "Enter collate (leave empty for default (utf8_unicode_ci)): " MARIADB_DATABASE_COLLATE
if [[ -z $MARIADB_DATABASE_CHARACTER_SET ]]; then
MARIADB_DATABASE_CHARACTER_SET="utf8"
fi
if [[ -z $MARIADB_DATABASE_COLLATE ]]; then
MARIADB_DATABASE_COLLATE="utf8_unicode_ci"
fi
rm -f tmp
touch tmp
echo "CREATE DATABASE IF NOT EXISTS $MARIADB_DATABASE_NAME CHARACTER SET '$MARIADB_DATABASE_CHARACTER_SET' COLLATE '$MARIADB_DATABASE_COLLATE';" >> tmp
echo "GRANT ALL PRIVILEGES ON $MARIADB_DATABASE_NAME.* TO '$MARIADB_CUSTOMER_NAME'@'%';" >> tmp
echo "FLUSH PRIVILEGES;" >> tmp
TMP=$(cat tmp | docker exec -i $MARIADB_CONTAINER_NAME mysql -uroot -p$MARIADB_ROOT_PASSWORD -BN)
rm -f tmp
echo "Done!"

+ 108
- 0
delete_database_from_customer View File

@ -0,0 +1,108 @@
#!/bin/bash
echo "####################################################################"
echo "# docker_mariadb delete_database_from_customer script #"
echo "# Dennis Buchhorn - bucde@b-eit.de #"
echo "####################################################################"
echo "# WARNING: password is plain text! #"
#echo "# #"
echo "####################################################################"
echo ""
MARIADB_CONTAINER_NAME=""
MARIADB_ROOT_PASSWORD=""
TMP=$(docker container ls --format "{{.Names}}")
for ENTRY in $TMP; do
CONTAINER_LIST+=($ENTRY)
done
if [[ ${#CONTAINER_LIST[@]} > 0 ]]; then
echo "List of all running containers:"
for I in ${!CONTAINER_LIST[@]}; do
echo " Number [$I]: ${CONTAINER_LIST[$I]}"
done
else
echo "No containers running!"
exit 1
fi
read -p "Enter mariadb container number: " TMP
MARIADB_CONTAINER_NAME="${CONTAINER_LIST[$TMP]}"
read -p "Enter mariadb root password: " MARIADB_ROOT_PASSWORD
rm -f tmp
touch tmp
echo "SELECT user FROM mysql.user;" >> tmp
TMP=$(cat tmp | docker exec -i $MARIADB_CONTAINER_NAME mysql -uroot -p$MARIADB_ROOT_PASSWORD -BN)
rm -f tmp
for ENTRY in $TMP; do
if ! [[ $ENTRY == "root" || $ENTRY == "mariadb.sys" ]]; then
CUSTOMER_LIST+=($ENTRY)
fi
done
if [[ ${CUSTOMER_LIST[@]} > 0 ]]; then
echo "List of all customers:"
for I in ${!CUSTOMER_LIST[@]}; do
echo " Number [$I]: ${CUSTOMER_LIST[$I]}"
done
else
echo "No customers!"
exit 1
fi
read -p "Enter customer number: " TMP
MARIADB_CUSTOMER_NAME="${CUSTOMER_LIST[$TMP]}"
rm -f tmp
touch tmp
echo "SELECT db FROM mysql.db WHERE user='$MARIADB_CUSTOMER_NAME';" >> tmp
TMP=$(cat tmp | docker exec -i $MARIADB_CONTAINER_NAME mysql -uroot -p$MARIADB_ROOT_PASSWORD -BN)
rm -f tmp
for ENTRY in $TMP; do
DATABASE_LIST+=($ENTRY)
done
if [[ ${#DATABASE_LIST[@]} > 0 ]]; then
echo "List of all databases from $MARIADB_CUSTOMER_NAME:"
for I in ${!DATABASE_LIST[@]}; do
echo " Number [$I]: ${DATABASE_LIST[$I]}"
done
else
echo "No databases!"
exit 1
fi
read -p "Enter database number: " TMP
MARIADB_DATABASE_NAME="${DATABASE_LIST[$TMP]}"
read -p "!!! WARNING !!! Database '$MARIADB_DATABASE_NAME' will be deleted! Press ENTER to continue or CTRL+C to abort..."
rm -f tmp
touch tmp
echo "REVOKE ALL PRIVILEGES ON $MARIADB_DATABASE_NAME.* FROM '$MARIADB_CUSTOMER_NAME';" >> tmp
echo "DROP DATABASE IF EXISTS $MARIADB_DATABASE_NAME;" >> tmp
TMP=$(cat tmp | docker exec -i $MARIADB_CONTAINER_NAME mysql -uroot -p$MARIADB_ROOT_PASSWORD -BN)
rm -f tmp
echo "Done!"

+ 65
- 0
get_customers View File

@ -0,0 +1,65 @@
#!/bin/bash
echo "####################################################################"
echo "# docker_mariadb get_customers script #"
echo "# Dennis Buchhorn - bucde@b-eit.de #"
echo "####################################################################"
echo "# WARNING: password is plain text! #"
#echo "# #"
echo "####################################################################"
echo ""
MARIADB_CONTAINER_NAME=""
MARIADB_ROOT_PASSWORD=""
TMP=$(docker container ls --format "{{.Names}}")
for ENTRY in $TMP; do
CONTAINER_LIST+=($ENTRY)
done
if [[ ${#CONTAINER_LIST[@]} > 0 ]]; then
echo "List of all running containers:"
for I in ${!CONTAINER_LIST[@]}; do
echo " Number [$I]: ${CONTAINER_LIST[$I]}"
done
else
echo "No containers running!"
exit 1
fi
read -p "Enter mariadb container number: " TMP
MARIADB_CONTAINER_NAME="${CONTAINER_LIST[$TMP]}"
read -p "Enter mariadb root password: " MARIADB_ROOT_PASSWORD
rm -f tmp
touch tmp
echo "SELECT user FROM mysql.user;" >> tmp
TMP=$(cat tmp | docker exec -i $MARIADB_CONTAINER_NAME mysql -uroot -p$MARIADB_ROOT_PASSWORD -BN)
rm -f tmp
for ENTRY in $TMP; do
if ! [[ $ENTRY == "root" || $ENTRY == "mariadb.sys" ]]; then
CUSTOMER_LIST+=($ENTRY)
fi
done
if [[ ${CUSTOMER_LIST[@]} > 0 ]]; then
echo "List of all customers:"
for I in ${!CUSTOMER_LIST[@]}; do
echo " ${CUSTOMER_LIST[$I]}"
done
else
echo "No customers!"
fi
rm -f tmp
echo "Done!"

+ 93
- 0
get_databases_from_customer View File

@ -0,0 +1,93 @@
#!/bin/bash
echo "####################################################################"
echo "# docker_mariadb get_databases_from_customer script #"
echo "# Dennis Buchhorn - bucde@b-eit.de #"
echo "####################################################################"
echo "# WARNING: password is plain text! #"
#echo "# #"
echo "####################################################################"
echo ""
MARIADB_CONTAINER_NAME=""
MARIADB_ROOT_PASSWORD=""
TMP=$(docker container ls --format "{{.Names}}")
for ENTRY in $TMP; do
CONTAINER_LIST+=($ENTRY)
done
if [[ ${#CONTAINER_LIST[@]} > 0 ]]; then
echo "List of all running containers:"
for I in ${!CONTAINER_LIST[@]}; do
echo " Number [$I]: ${CONTAINER_LIST[$I]}"
done
else
echo "No containers running!"
exit 1
fi
read -p "Enter mariadb container number: " TMP
MARIADB_CONTAINER_NAME="${CONTAINER_LIST[$TMP]}"
read -p "Enter mariadb root password: " MARIADB_ROOT_PASSWORD
rm -f tmp
touch tmp
echo "SELECT user FROM mysql.user;" >> tmp
TMP=$(cat tmp | docker exec -i $MARIADB_CONTAINER_NAME mysql -uroot -p$MARIADB_ROOT_PASSWORD -BN)
rm -f tmp
for ENTRY in $TMP; do
if ! [[ $ENTRY == "root" || $ENTRY == "mariadb.sys" ]]; then
CUSTOMER_LIST+=($ENTRY)
fi
done
if [[ ${CUSTOMER_LIST[@]} > 0 ]]; then
echo "List of all customers:"
for I in ${!CUSTOMER_LIST[@]}; do
echo " Number [$I]: ${CUSTOMER_LIST[$I]}"
done
else
echo "No customers!"
exit 1
fi
read -p "Enter customer number: " TMP
MARIADB_CUSTOMER_NAME="${CUSTOMER_LIST[$TMP]}"
rm -f tmp
touch tmp
echo "SELECT db FROM mysql.db WHERE user='$MARIADB_CUSTOMER_NAME';" >> tmp
TMP=$(cat tmp | docker exec -i $MARIADB_CONTAINER_NAME mysql -uroot -p$MARIADB_ROOT_PASSWORD -BN)
rm -f tmp
for ENTRY in $TMP; do
DATABASE_LIST+=($ENTRY)
done
if [[ ${#DATABASE_LIST[@]} > 0 ]]; then
echo "List of all databases from $MARIADB_CUSTOMER_NAME:"
for I in ${!DATABASE_LIST[@]}; do
echo " ${DATABASE_LIST[$I]}"
done
else
echo "No databases!"
fi
rm -f tmp
echo "Done!"

Loading…
Cancel
Save