diff options
author | Yehonal <yehonal.azeroth@gmail.com> | 2017-09-25 02:15:22 +0200 |
---|---|---|
committer | Yehonal <yehonal.azeroth@gmail.com> | 2017-09-25 02:15:22 +0200 |
commit | c42ec97bb09459a2bad953f5374ab8a887a0e93e (patch) | |
tree | a4ff9a83113f2153c87b37aa5573b5abdf212284 /bin | |
parent | 61df6f7d447379c7434fbe5b99e89b90ff369cd1 (diff) |
Various fixes for installer script and db_assembler
Diffstat (limited to 'bin')
-rw-r--r-- | bin/db_assembler/includes/functions.sh | 105 | ||||
-rw-r--r-- | bin/installer/includes/os_configs/debian.sh | 4 | ||||
-rw-r--r-- | bin/installer/includes/os_configs/ubuntu.sh | 4 |
3 files changed, 88 insertions, 25 deletions
diff --git a/bin/db_assembler/includes/functions.sh b/bin/db_assembler/includes/functions.sh index da0415948a..cc917af18f 100644 --- a/bin/db_assembler/includes/functions.sh +++ b/bin/db_assembler/includes/functions.sh @@ -1,12 +1,47 @@ +# globals +PROMPT_USER="" +PROMPT_PASS="" + +# use in a subshell +function dbasm_resetExitCode() { + exit 0 +} + +function dbasm_mysqlExec() { + confs=$1 + command=$2 + options=$3 + + eval $confs + + if [[ ! -z "${PROMPT_USER// }" ]]; then + MYSQL_USER=$PROMPT_USER + MYSQL_PASS=$PROMPT_PASS + fi + + export MYSQL_PWD=$MYSQL_PASS + + retval=$("$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" $options -e "$command") + if [[ $? -ne 0 ]]; then + err=$("$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" $options -e "$command" 2>&1 ) + if [[ "$err" == *"Access denied"* ]]; then + read -p "Insert mysql user:" PROMPT_USER + read -p "Insert mysql pass:" -s PROMPT_PASS + export MYSQL_PWD=$PROMPT_PASS + + retval=$("$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$PROMPT_USER" $options -e "$command") + else + exit + fi + fi +} + function dbasm_isNotEmpty() { dbname=$1 conf=$2 - - eval $confs; - export MYSQL_PWD=$MYSQL_PASS - - RESULT=`"$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" --skip-column-names -e "SELECT COUNT(DISTINCT table_name) FROM information_schema.columns WHERE table_schema = '${dbname}'"` - if (( $RESULT > 0 )); then + + dbasm_mysqlExec "$conf" "SELECT COUNT(DISTINCT table_name) FROM information_schema.columns WHERE table_schema = '${dbname}'" "--skip-column-names" + if (( $retval > 0 )); then true else false @@ -17,11 +52,8 @@ function dbasm_dbExists() { dbname=$1 conf=$2 - eval $confs; - export MYSQL_PWD=$MYSQL_PASS - - RESULT=`"$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" --skip-column-names -e "SHOW DATABASES LIKE '${dbname}'"` - if [ "$RESULT" == "${dbname}" ]; then + dbasm_mysqlExec "$conf" "SHOW DATABASES LIKE '${dbname}'" "--skip-column-names" + if [ "$retval" == "${dbname}" ]; then true else false @@ -38,17 +70,14 @@ function dbasm_createDB() { name="DB_"$uc"_NAME" dbname=${!name} - - eval $confs; - - export MYSQL_PWD=$MYSQL_PASS + + eval $confs if dbasm_dbExists $dbname "$confs"; then echo "$dbname database exists" else - "$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" -e "GRANT USAGE ON * . * TO 'acore'@'${MYSQL_HOST}' IDENTIFIED BY 'acore' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 ;" - "$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" -e "CREATE DATABASE \`${dbname}\`" - "$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" -e "GRANT ALL PRIVILEGES ON \`${dbname}\` . * TO 'acore'@'${MYSQL_HOST}' WITH GRANT OPTION;" + echo "Creating DB ${dbname} ..." + dbasm_mysqlExec "$confs" "CREATE DATABASE \`${dbname}\`" "" fi } @@ -183,12 +212,29 @@ function dbasm_db_backup() { dbname=${!name} eval $confs; + + if [[ ! -z "${PROMPT_USER// }" ]]; then + MYSQL_USER=$PROMPT_USER + MYSQL_PASS=$PROMPT_PASS + fi export MYSQL_PWD=$MYSQL_PASS now=`date +%s` - "$DB_MYSQL_DUMP_EXEC" --opt --user="$MYSQL_USER" --host="$MYSQL_HOST" "$dbname" > "${BACKUP_FOLDER}${database}_backup_${now}.sql" && echo "done" + "$DB_MYSQL_DUMP_EXEC" --opt --user="$MYSQL_USER" --host="$MYSQL_HOST" "$dbname" > "${BACKUP_FOLDER}${database}_backup_${now}.sql" && echo "done" + if [[ $? -ne 0 ]]; then + err=$("$DB_MYSQL_DUMP_EXEC" --opt --user="$MYSQL_USER" --host="$MYSQL_HOST" "$dbname" 2>&1 ) + if [[ "$err" == *"Access denied"* ]]; then + read -p "Insert mysql user:" PROMPT_USER + read -p "Insert mysql pass:" PROMPT_PASS + export MYSQL_PWD=$PROMPT_PASS + + "$DB_MYSQL_DUMP_EXEC" --opt --user="$PROMPT_USER" --host="$MYSQL_HOST" "$dbname" > "${BACKUP_FOLDER}${database}_backup_${now}.sql" && echo "done" + else + exit + fi + fi } function dbasm_db_import() { @@ -213,10 +259,27 @@ function dbasm_db_import() { echo "importing $1 - $2 ..." eval $confs; + + if [[ ! -z "${PROMPT_USER// }" ]]; then + MYSQL_USER=$PROMPT_USER + MYSQL_PASS=$PROMPT_PASS + fi export MYSQL_PWD=$MYSQL_PASS - - "$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" "$dbname" < "${OUTPUT_FOLDER}${database}_${type}.sql" + + "$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" "$dbname" < "${OUTPUT_FOLDER}${database}_${type}.sql" + if [[ $? -ne 0 ]]; then + err=$("$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" "$dbname" 2>&1 ) + if [[ "$err" == *"Access denied"* ]]; then + read -p "Insert mysql user:" PROMPT_USER + read -p "Insert mysql pass:" PROMPT_PASS + export MYSQL_PWD=$PROMPT_PASS + + "$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$PROMPT_USER" "$dbname" < "${OUTPUT_FOLDER}${database}_${type}.sql" + else + exit + fi + fi } function dbasm_import() { diff --git a/bin/installer/includes/os_configs/debian.sh b/bin/installer/includes/os_configs/debian.sh index 8678a89178..eb67cfb367 100644 --- a/bin/installer/includes/os_configs/debian.sh +++ b/bin/installer/includes/os_configs/debian.sh @@ -1,5 +1,5 @@ -sudo apt-get install git cmake make gcc g++ clang libmysqlclient-dev \ +sudo apt-get install -y git cmake make gcc g++ clang libmysqlclient-dev \ libssl1.0-dev libbz2-dev libreadline-dev libncurses-dev \ -mysql-server libace-6.* libace-dev
\ No newline at end of file +mysql-server libace-6.* libace-dev diff --git a/bin/installer/includes/os_configs/ubuntu.sh b/bin/installer/includes/os_configs/ubuntu.sh index f703c2303d..6ed4117ed6 100644 --- a/bin/installer/includes/os_configs/ubuntu.sh +++ b/bin/installer/includes/os_configs/ubuntu.sh @@ -1,5 +1,5 @@ -sudo apt-get install git cmake make gcc g++ clang libmysqlclient-dev \ +sudo apt-get install -y git cmake make gcc g++ clang libmysqlclient-dev \ libssl-dev=1.0.2g-1ubuntu4.8 libbz2-dev libreadline-dev libncurses-dev \ -mysql-server libace-6.* libace-dev
\ No newline at end of file +mysql-server libace-6.* libace-dev |