Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # skript na vyrabeni adresaru pro virtualhosty
- # urceny pro firstlevel adminy
- # Exit program and print error message
- function die () {
- errstr="$1"
- printf "$errstr\n" 1>&2
- exit 1
- }
- if [ "$EUID" -ne 0 ]
- then echo "Spust skript pres sudo nebo pod rootem!"
- exit 1
- fi
- # natahnem pravou cestu, pokud nahodou je pousteno pres symlink
- DIR="$(dirname "$(readlink -f "$0")")"
- echo
- echo "create_mysqldb - nastroj pro vytvareni databazi"
- echo "--------------------------------------------------"
- # NATAHNEM ARGUMENT(Y)
- if [[ ! $# == 2 ]]
- then
- echo "spatne parametry!"
- echo "povolene parametry:"
- echo "create_mysqldb nazevdb nazevuzivatele"
- echo "nazevdb = [a-zA-Z0-9_-] max 64 znaku"
- echo "nazevuzivatele = [a-zA-Z0-9_-] max 64 znaku"
- echo "heslo vygeneruje skript sam, nahodne - bude ukazane nakonci"
- echo
- echo "Priklad:"
- echo "sudo create_mysqldb luxusnizbozi admin"
- echo
- echo "skript predpoklada, ze je mozne pod rootem pripojeni na mysql"
- echo "bez zadavani hesla (reseno pomoci my.cnf nebo ~/.my.cnf)"
- exit 1
- fi
- DBNAME=$1
- USERNAME=$2
- ################
- # sanity checks
- # 64 znaku backticks ``
- # kontrola na nechtene znaky - povolime pouze znaky, cisla, -, _, a tecky. Tecky otestujem jedtr dale.
- err=0
- type=""
- if [[ ! ${DBNAME} =~ ^[a-zA-Z0-9_-]+$ ]]
- then
- err=1
- type="${type}Nepovolene znaky v nazvu databaze (lze pouzit pouze a-z A-Z 0-9 - _)\n"
- fi
- if [[ ! ${USERNAME} =~ ^[a-zA-Z0-9_-]+$ ]]
- then
- err=1
- type="${type}Nepovolene znaky ve jmene uzivatele (lze pouzit pouze a-z A-Z 0-9 - _)\n"
- fi
- if [[ ${USERNAME} = "root" ]]
- then
- err=1
- type="${type}Uzivatele root neni mozno pouzit\n"
- fi
- if [ ${#DBNAME} -ge 65 ]
- then
- err=1
- type="${type}Nazev databaze delsi nez 64 znaku\n"
- fi
- if [ ${#USERNAME} -ge 17 ]
- then
- err=1
- type="${type}Uzivatelske jmeno delsi nez 16 znaku\n"
- fi
- if [[ ${err} = "1" ]]
- then
- echo "Spatne parametry!"
- echo -e $type
- echo "Zkus to znovu!"
- echo
- exit 1
- fi
- #################
- #################
- # check existence uzivatele
- RETURN=0
- RETURN="$(mysql --defaults-file=/etc/mysql/debian.cnf -sse "SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = '${USERNAME}')")"
- if [ $RETURN = 1 ]
- then
- echo "Zadany uzivatel uz existuje!"
- exit 1
- fi
- # check existence databaze
- RETURN="$(mysql --defaults-file=/etc/mysql/debian.cnf -sse "SELECT EXISTS(SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '${DBNAME}')")"
- if [ $RETURN = 1 ]
- then
- echo "Zadana databaze uz existuje!"
- exit 1
- fi
- #################
- #################
- # Mame zkontrolovano
- PASSWORD="$(/usr/bin/pwgen --ambiguous --secure --num-passwords=1 32)"
- mysql --defaults-file=/etc/mysql/debian.cnf -sse "create database \`${DBNAME}\`;" || die "Vytvoreni databaze \"$DBNAME\" selhalo!"
- 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!"
- 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!"
- mysql --defaults-file=/etc/mysql/debian.cnf -sse "flush privileges;" || die "Operace flush privileges selhala!"
- #
- #################
- echo
- echo "Hotovo"
- echo "------"
- echo "Vyrobena databaze : ${DBNAME}"
- echo "nagrantovano all pro: ${USERNAME} (pouze z localhost nebo 127.0.0.1)"
- echo "s heslem : ${PASSWORD}"
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement