Guest User

Untitled

a guest
Oct 8th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.95 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. #
  4. # Script to create MySQL db + user
  5. #
  6. # @author Karel Wintersky <karel.wintersky@gmail.com>
  7. # @version 0.2
  8. # mysql_config_editor set --login-path=proftpd --host=localhost --user=proftpd --password
  9.  
  10.  
  11. _bold=$(tput bold)
  12. _underline=$(tput sgr 0 1)
  13. _reset=$(tput sgr0)
  14.  
  15. _purple=$(tput setaf 171)
  16. _red=$(tput setaf 1)
  17. _green=$(tput setaf 76)
  18. _tan=$(tput setaf 3)
  19. _blue=$(tput setaf 38)
  20.  
  21. function _success()
  22. {
  23. printf "${_green}✔ %s${_reset}\n" "$@"
  24. }
  25.  
  26. function _printPoweredBy()
  27. {
  28. echo ""
  29. echo "################################################################"
  30. echo "MySQL :: Create database, user and password"
  31. echo "(c) Karel Wintersky <karel.wintersky@gmail.com>, 2018"
  32. echo "################################################################"
  33. echo ""
  34. }
  35.  
  36. function generatePassword()
  37. {
  38. echo "$(openssl rand -base64 12)"
  39. }
  40.  
  41. function getCredentials()
  42. {
  43. read -e -p "Please enter the NAME of the new database! (example: database1): " DBNAME
  44. read -e -p "Please enter HOST for user access (remote access: '%'): " -i "localhost" USERHOST
  45. read -e -p "Please enter the database CHARACTER SET! (latin1, utf8, ...): " -i "utf8" CHARSET
  46. read -e -p "Please enter the NAME of the user (example: $DBNAME): " -i "$DBNAME" USERNAME
  47. read -e -p "Please enter the PASSWORD for the new database user! (current is $PASSWORD): " -i "$PASSWORD" PASSWORD
  48. }
  49.  
  50. function getRootPassword()
  51. {
  52. read -e -p "Please enter MySQL root user password: " ROOTPASSWORD
  53.  
  54. ROOTACCESS="--user=root --password=${ROOTPASSWORD}"
  55. }
  56.  
  57. function checkDBExist()
  58. {
  59. local FOUND
  60. FOUND=`mysql ${ROOTACCESS} -e "SHOW DATABASES LIKE '${DBNAME}';" | grep ${DBNAME}`
  61.  
  62. echo ${FOUND}
  63.  
  64. #if [ "${FOUND}" = "${DBNAME}" ]; then
  65. # echo "1"
  66. #else
  67. # echo "0"
  68. #fi
  69. }
  70.  
  71. function checkUserExist()
  72. {
  73. local FOUND
  74. FOUND=`mysql ${ROOTACCESS} -e "SELECT COUNT(*) FROM mysql.user WHERE user = '${USERNAME}';" | grep 1`
  75.  
  76. if [ "${FOUND}" = "1" ]; then
  77. echo "1"
  78. else
  79. echo "0"
  80. fi
  81. }
  82.  
  83. function create()
  84. {
  85. if [ ! -f ~/.my.cnf ]; then
  86. getRootPassword
  87. fi
  88.  
  89. if [[ -n $(checkDBExist) ]]; then
  90. echo "${_purple}✔${_reset} Database ${DBNAME} already exist!";
  91. else
  92. echo "Creating database..."
  93. mysql ${ROOTACCESS} -e "CREATE DATABASE ${DBNAME} /*\!40100 DEFAULT CHARACTER SET ${CHARSET} */;"
  94. echo "${_green}✔${_reset} Database successfully created!"
  95. fi
  96.  
  97. echo ""
  98.  
  99. if [ $(checkUserExist) = "0" ]; then
  100. echo "Creating new user..."
  101. mysql ${ROOTACCESS} -e "CREATE USER ${USERNAME}@'${USERHOST}' IDENTIFIED BY '${PASSWORD}';"
  102. echo "${_green}✔${_reset} User successfully created!"
  103. else
  104. echo "${_purple}✔${_reset} User ${USERNAME} already exist!";
  105. fi
  106.  
  107. echo ""
  108.  
  109. echo "Granting ALL privileges on ${DBNAME} to ${USERNAME}!"
  110. mysql ${ROOTACCESS} -e "GRANT ALL PRIVILEGES ON ${DBNAME}.* TO '${USERNAME}'@'${USERHOST}';"
  111. mysql ${ROOTACCESS} -e "FLUSH PRIVILEGES;"
  112. echo ""
  113. }
  114.  
  115. function printSuccessMessage()
  116. {
  117. _success "MySQL DB / User creation completed!"
  118. echo ""
  119.  
  120. echo "################################################################"
  121. echo ""
  122. echo " >> Database : ${DBNAME}"
  123. echo " >> User : ${USERNAME}"
  124. echo " >> Pass : ${PASSWORD}"
  125. echo " >> Host : ${USERHOST}"
  126. echo ""
  127. echo "################################################################"
  128. }
  129.  
  130. ################################################################################
  131. # Main
  132. ################################################################################
  133. export LC_CTYPE=C
  134. export LANG=C
  135. VERSION="0.2"
  136.  
  137. BIN_MYSQL=$(which mysql)
  138.  
  139. ROOTACCESS=
  140. ROOTPASSWORD=
  141. CHARSET='utf8';
  142. DBNAME=
  143. USERNAME=
  144. USERHOST='localhost'
  145. PASSWORD=$(generatePassword);
  146.  
  147. function main()
  148. {
  149. _printPoweredBy
  150.  
  151. getCredentials
  152.  
  153. echo ""
  154. echo "################################################################"
  155. echo ""
  156.  
  157. create
  158. printSuccessMessage
  159. }
  160.  
  161. main
  162.  
  163. exit 0
Add Comment
Please, Sign In to add comment