You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
2.5 KiB

  1. #!/bin/bash
  2. echo "####################################################################"
  3. echo "# docker_mariadb create_database_for_customer script #"
  4. echo "# Dennis Buchhorn - bucde@b-eit.de #"
  5. echo "####################################################################"
  6. echo "# WARNING: password is plain text! #"
  7. #echo "# #"
  8. echo "####################################################################"
  9. echo ""
  10. MARIADB_CONTAINER_NAME=""
  11. MARIADB_ROOT_PASSWORD=""
  12. MARIADB_DATABASE_NAME=""
  13. MARIADB_DATABASE_CHARACTER_SET=""
  14. MARIADB_DATABASE_COLLATE=""
  15. TMP=$(docker container ls --format "{{.Names}}")
  16. for ENTRY in $TMP; do
  17. CONTAINER_LIST+=($ENTRY)
  18. done
  19. if [[ ${#CONTAINER_LIST[@]} > 0 ]]; then
  20. echo "List of all running containers:"
  21. for I in ${!CONTAINER_LIST[@]}; do
  22. echo " Number [$I]: ${CONTAINER_LIST[$I]}"
  23. done
  24. else
  25. echo "No containers running!"
  26. exit 1
  27. fi
  28. read -p "Enter mariadb container number: " TMP
  29. MARIADB_CONTAINER_NAME="${CONTAINER_LIST[$TMP]}"
  30. read -p "Enter mariadb root password: " MARIADB_ROOT_PASSWORD
  31. rm -f tmp
  32. touch tmp
  33. echo "SELECT user FROM mysql.user;" >> tmp
  34. TMP=$(cat tmp | docker exec -i $MARIADB_CONTAINER_NAME mysql -uroot -p$MARIADB_ROOT_PASSWORD -BN)
  35. rm -f tmp
  36. for ENTRY in $TMP; do
  37. if ! [[ $ENTRY == "root" || $ENTRY == "mariadb.sys" ]]; then
  38. CUSTOMER_LIST+=($ENTRY)
  39. fi
  40. done
  41. if [[ ${CUSTOMER_LIST[@]} > 0 ]]; then
  42. echo "List of all customers:"
  43. for I in ${!CUSTOMER_LIST[@]}; do
  44. echo " Number [$I]: ${CUSTOMER_LIST[$I]}"
  45. done
  46. else
  47. echo "No customers!"
  48. exit 1
  49. fi
  50. read -p "Enter customer number: " TMP
  51. MARIADB_CUSTOMER_NAME="${CUSTOMER_LIST[$TMP]}"
  52. read -p "Enter database name: " MARIADB_DATABASE_NAME
  53. read -p "Enter character set (leave empty for default (utf8)): " MARIADB_DATABASE_CHARACTER_SET
  54. read -p "Enter collate (leave empty for default (utf8_unicode_ci)): " MARIADB_DATABASE_COLLATE
  55. if [[ -z $MARIADB_DATABASE_CHARACTER_SET ]]; then
  56. MARIADB_DATABASE_CHARACTER_SET="utf8"
  57. fi
  58. if [[ -z $MARIADB_DATABASE_COLLATE ]]; then
  59. MARIADB_DATABASE_COLLATE="utf8_unicode_ci"
  60. fi
  61. rm -f tmp
  62. touch tmp
  63. echo "CREATE DATABASE IF NOT EXISTS $MARIADB_DATABASE_NAME CHARACTER SET '$MARIADB_DATABASE_CHARACTER_SET' COLLATE '$MARIADB_DATABASE_COLLATE';" >> tmp
  64. echo "GRANT ALL PRIVILEGES ON $MARIADB_DATABASE_NAME.* TO '$MARIADB_CUSTOMER_NAME'@'%';" >> tmp
  65. echo "FLUSH PRIVILEGES;" >> tmp
  66. TMP=$(cat tmp | docker exec -i $MARIADB_CONTAINER_NAME mysql -uroot -p$MARIADB_ROOT_PASSWORD -BN)
  67. rm -f tmp
  68. echo "Done!"