diff options
Diffstat (limited to 'bin/db_assembler/includes/functions.sh')
-rw-r--r-- | bin/db_assembler/includes/functions.sh | 105 |
1 files changed, 84 insertions, 21 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() { |