Merge branch 'packaging'
[osm/RO.git] / database_utils / init_mano_db.sh
index cbb76ef..83d60a8 100755 (executable)
@@ -26,6 +26,7 @@ DBPASS=""
 DBHOST="localhost"
 DBPORT="3306"
 DBNAME="mano_db"
+CREATEDB=""
 
 # Detect paths
 MYSQL=$(which mysql)
@@ -38,11 +39,12 @@ function usage(){
     echo -e "  Inits openmano database; deletes previous one and loads from ${DBNAME}_structure.sql"
     echo -e "  OPTIONS"
     echo -e "     -u USER  database user. '$DBUSER' by default. Prompts if DB access fails"
-    echo -e "     -p PASS  database password. 'No password' by default. Prompts if DB access fails"
+    echo -e "     -p PASS  database password. 'No password' or 'manopw' by default. Prompts if DB access fails"
     echo -e "     -P PORT  database port. '$DBPORT' by default"
     echo -e "     -h HOST  database host. '$DBHOST' by default"
     echo -e "     -d NAME  database name. '$DBNAME' by default.  Prompts if DB access fails"
     echo -e "     --help   shows this help"
+    echo -e "     --createdb   forces the deletion and creation of the database"
 }
 
 while getopts ":u:p:P:d:h:-:" o; do
@@ -63,9 +65,14 @@ while getopts ":u:p:P:d:h:-:" o; do
             DBHOST="$OPTARG"
             ;;
         -)
-            [ "${OPTARG}" == "help" ] && usage && exit 0
-            echo "Invalid option: --$OPTARG" >&2 && usage  >&2
-            exit 1
+            if [ "${OPTARG}" == "help" ]; then
+                usage && exit 0
+            elif [ "${OPTARG}" == "createdb" ]; then
+                CREATEDB="yes"
+            else
+                echo "Invalid option: --$OPTARG" >&2 && usage  >&2
+                exit 1
+            fi
             ;;
         \?)
             echo "Invalid option: -$OPTARG" >&2 && usage  >&2
@@ -89,24 +96,47 @@ DBPASS_=""
 [ -n "$DBPASS" ] && DBPASS_="-p$DBPASS"
 DBHOST_="-h$DBHOST"
 DBPORT_="-P$DBPORT"
-while !  echo ";" | mysql $DBHOST_ $DBPORT_ $DBUSER_ $DBPASS_ >/dev/null 2>&1
+
+TEMPFILE="$(mktemp -q --tmpdir "initmanodb.XXXXXX")"
+trap 'rm -f "$TEMPFILE"' EXIT
+chmod 0600 "$TEMPFILE"
+DEF_EXTRA_FILE_PARAM="--defaults-extra-file=$TEMPFILE"
+if [ -z "${DBPASS}" ]
+then
+    password_ok=""
+    echo -e "[client]\nuser='${DBUSER}'\npassword='manopw'" > "$TEMPFILE"
+    mysql --defaults-extra-file="$TEMPFILE" $DBHOST_ $DBPORT_ $DBNAME -e "quit" >/dev/null 2>&1 && DBPASS="manopw"
+    echo -e "[client]\nuser='${DBUSER}'\npassword=''" > "$TEMPFILE"
+    mysql --defaults-extra-file="$TEMPFILE" $DBHOST_ $DBPORT_ $DBNAME -e "quit" >/dev/null 2>&1 && DBPASS=""
+fi
+echo -e "[client]\nuser='${DBUSER}'\npassword='${DBPASS}'" > "$TEMPFILE"
+
+while !  mysql $DEF_EXTRA_FILE_PARAM $DBHOST_ $DBPORT_ -e "quit" >/dev/null 2>&1
 do
         [ -n "$logintry" ] &&  echo -e "\nInvalid database credentials!!!. Try again (Ctrl+c to abort)"
         [ -z "$logintry" ] &&  echo -e "\nProvide database credentials"
 #        read -e -p "mysql database name($DBNAME): " KK
 #        [ -n "$KK" ] && DBNAME="$KK"
         read -e -p "mysql user($DBUSER): " KK
-        [ -n "$KK" ] && DBUSER="$KK" && DBUSER_="-u$DBUSER"
+        [ -n "$KK" ] && DBUSER="$KK"
         read -e -s -p "mysql password: " DBPASS
-        [ -n "$DBPASS" ] && DBPASS_="-p$DBPASS"
-        [ -z "$DBPASS" ] && DBPASS_=""
+        echo -e "[client]\nuser='${DBUSER}'\npassword='${DBPASS}'" > "$TEMPFILE"
         logintry="yes"
         echo
 done
+[ -z "${DBPASS}" ] && DBPASS_=""
+[ -n "${DBPASS}" ] && DBPASS_="-p${DBPASS}"
+
+if [ -n "${CREATEDB}" ]; then
+    echo "    deleting previous database ${DBNAME}"
+    echo "DROP DATABASE IF EXISTS ${DBNAME}" | mysql $DEF_EXTRA_FILE_PARAM $DBHOST_ $DBPORT_
+    echo "    creating database ${DBNAME}"
+    mysqladmin $DEF_EXTRA_FILE_PARAM $DBHOST_ $DBPORT_ -s create ${DBNAME} || exit 1
+fi
 
-#${DIRNAME}/quick_delete_db.sh $MUSER $MPASS $MDB $HOST $PORT
 echo "    loading ${DIRNAME}/${DBNAME}_structure.sql"
-mysql  $DBHOST_ $DBPORT_ $DBUSER_ $DBPASS_ $DBNAME < ${DIRNAME}/mano_db_structure.sql
+#echo 'mysql '$DEF_EXTRA_FILE_PARAM' '$DBHOST_' '$DBPORT_' '$DBNAME' < '${DIRNAME}'/mano_db_structure.sql'
+mysql $DEF_EXTRA_FILE_PARAM $DBHOST_ $DBPORT_ $DBNAME < ${DIRNAME}/mano_db_structure.sql
 
 echo "    migrage database version"
 ${DIRNAME}/migrate_mano_db.sh $DBHOST_ $DBPORT_ $DBUSER_ $DBPASS_ -d$DBNAME