Advertisement
Guest User

create_db

a guest
Oct 6th, 2018
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.63 KB | None | 0 0
  1. #!/bin/bash
  2. # skript na vyrabeni adresaru pro virtualhosty
  3. # urceny pro firstlevel adminy
  4.  
  5. # Exit program and print error message
  6. function die () {
  7.         errstr="$1"
  8.         printf "$errstr\n" 1>&2
  9.         exit 1
  10. }
  11.  
  12. if [ "$EUID" -ne 0 ]
  13.   then echo "Spust skript pres sudo nebo pod rootem!"
  14.   exit 1
  15. fi
  16.  
  17. # natahnem pravou cestu, pokud nahodou je pousteno pres symlink
  18. DIR="$(dirname "$(readlink -f "$0")")"
  19.  
  20. echo
  21. echo "create_mysqldb - nastroj pro vytvareni databazi"
  22. echo "--------------------------------------------------"
  23.  
  24.  
  25. # NATAHNEM ARGUMENT(Y)
  26. if [[ ! $# == 2 ]]
  27. then
  28.        echo "spatne parametry!"
  29.        echo "povolene parametry:"
  30.        echo "create_mysqldb nazevdb nazevuzivatele"
  31.        echo "nazevdb = [a-zA-Z0-9_-] max 64 znaku"
  32.        echo "nazevuzivatele = [a-zA-Z0-9_-] max 64 znaku"
  33.        echo "heslo vygeneruje skript sam, nahodne - bude ukazane nakonci"
  34.        echo
  35.        echo "Priklad:"
  36.        echo "sudo create_mysqldb luxusnizbozi admin"
  37.        echo
  38.        echo "skript predpoklada, ze je mozne pod rootem pripojeni na mysql"
  39.        echo "bez zadavani hesla (reseno pomoci my.cnf nebo ~/.my.cnf)"
  40.        exit 1
  41. fi
  42.  
  43. DBNAME=$1
  44. USERNAME=$2
  45.  
  46. ################
  47. # sanity checks
  48. # 64 znaku backticks ``
  49. # kontrola na nechtene znaky - povolime pouze znaky, cisla, -, _, a tecky. Tecky otestujem jedtr dale.
  50.  
  51. err=0
  52. type=""
  53. if [[ ! ${DBNAME} =~ ^[a-zA-Z0-9_-]+$ ]]
  54. then
  55.  err=1
  56.  type="${type}Nepovolene znaky v nazvu databaze (lze pouzit pouze a-z A-Z 0-9 - _)\n"
  57. fi
  58.  
  59. if [[ ! ${USERNAME} =~ ^[a-zA-Z0-9_-]+$ ]]
  60. then
  61.  err=1
  62.  type="${type}Nepovolene znaky ve jmene uzivatele (lze pouzit pouze a-z A-Z 0-9 - _)\n"
  63. fi
  64.  
  65. if [[ ${USERNAME} = "root" ]]
  66. then
  67.  err=1
  68.  type="${type}Uzivatele root neni mozno pouzit\n"
  69. fi
  70.  
  71. if [ ${#DBNAME} -ge 65 ]
  72. then
  73.  err=1
  74.  type="${type}Nazev databaze delsi nez 64 znaku\n"
  75. fi
  76.  
  77. if [ ${#USERNAME} -ge 17 ]
  78. then
  79.  err=1
  80.  type="${type}Uzivatelske jmeno delsi nez 16 znaku\n"
  81. fi
  82.  
  83. if [[ ${err} = "1" ]]
  84. then
  85.  echo "Spatne parametry!"
  86.  echo -e $type
  87.  echo "Zkus to znovu!"
  88.  echo
  89.  exit 1
  90. fi
  91.  
  92. #################
  93. #################
  94. # check existence uzivatele
  95. RETURN=0
  96. RETURN="$(mysql --defaults-file=/etc/mysql/debian.cnf -sse "SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = '${USERNAME}')")"
  97. if [ $RETURN = 1 ]
  98. then
  99.  echo "Zadany uzivatel uz existuje!"
  100.  exit 1
  101. fi
  102.  
  103. # check existence databaze
  104. RETURN="$(mysql --defaults-file=/etc/mysql/debian.cnf -sse "SELECT EXISTS(SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '${DBNAME}')")"
  105. if [ $RETURN = 1 ]
  106. then
  107.  echo "Zadana databaze uz existuje!"
  108.  exit 1
  109. fi
  110.  
  111. #################
  112. #################
  113. # Mame zkontrolovano
  114. PASSWORD="$(/usr/bin/pwgen --ambiguous --secure --num-passwords=1 32)"
  115. mysql --defaults-file=/etc/mysql/debian.cnf -sse "create database \`${DBNAME}\`;" || die "Vytvoreni databaze \"$DBNAME\" selhalo!"
  116. mysql --defaults-file=/etc/mysql/debian.cnf -sse "grant all on \`${DBNAME}\`.* to \`${USERNAME}\`@'localhost' identified by '${PASSWORD}';" || die "Prideleni prav pro \"$USERNAME@localhost\" selhalo!"
  117. mysql --defaults-file=/etc/mysql/debian.cnf -sse "grant all on \`${DBNAME}\`.* to \`${USERNAME}\`@'127.0.0.1' identified by '${PASSWORD}';" || die "Prideleni prav pro \"$USERNAME@127.0.0.1\" selhalo!"
  118. mysql --defaults-file=/etc/mysql/debian.cnf -sse "flush privileges;" || die "Operace flush privileges selhala!"
  119.  
  120. #
  121. #################
  122.  
  123. echo
  124. echo "Hotovo"
  125. echo "------"
  126. echo "Vyrobena databaze   : ${DBNAME}"
  127. echo "nagrantovano all pro: ${USERNAME} (pouze z localhost nebo 127.0.0.1)"
  128. echo "s heslem            : ${PASSWORD}"
  129. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement