diff --git a/database_utils/install-db-server.sh b/database_utils/install-db-server.sh
index 9ada1af..bf1a88a 100755
--- a/database_utils/install-db-server.sh
+++ b/database_utils/install-db-server.sh
@@ -1,16 +1,35 @@
-#!/bin/bash
+#!/usr/bin/env bash
+
+DB_NAME='mano_db'
+DB_ADMIN_USER="root"
+DB_USER="mano"
+DB_PASS="manopw"
+DB_ADMIN_PASSWD=""
+DB_PORT="3306"
+DB_HOST=""
+DB_HOST_PARAM=""
+QUIET_MODE=""
+FORCEDB=""
+NO_PACKAGES=""
+UNINSTALL=""
+
 
 function usage(){
     echo -e "usage: sudo $0 [OPTIONS]"
-    echo -e "Install openmano database server"
-    echo -e "On a Ubuntu 16.04 it configures openmano as a service"
+    echo -e "Install openmano database server and the needed packages"
     echo -e "  OPTIONS"
-    echo -e "     -u USER:    database admin user. 'root' by default. Prompts if needed"
-    echo -e "     -p PASS:    database admin password to be used or installed. Prompts if needed"
+    echo -e "     -U USER:    database admin user. '$DB_ADMIN_USER' by default. Prompts if needed"
+    echo -e "     -P PASS:    database admin password to be used or installed. Prompts if needed"
+    echo -e "     -d: database name, '$DB_NAME' by default"
+    echo -e "     -u: database user, '$DB_USER' by default"
+    echo -e "     -p: database pass, '$DB_PASS' by default"
+    echo -e "     -H: HOST  database host. 'localhost' by default"
+    echo -e "     -T: PORT  database port. '$DB_PORT' by default"
     echo -e "     -q --quiet: install in unattended mode"
     echo -e "     -h --help:  show this help"
-    echo -e "     --forcedb:  reinstall mano_db DB, deleting previous database if exists and creating a new one"
+    echo -e "     --forcedb:  reinstall database, deleting previous database if exists and creating a new one"
     echo -e "     --no-install-packages: use this option to skip updating and installing the requires packages. This avoid wasting time if you are sure requires packages are present e.g. because of a previous installation"
+    echo -e "     --unistall: delete database"
 }
 
 function install_packages(){
@@ -31,31 +50,119 @@
     done
 }
 
-function db_exists() {
+function _install_mysql_package(){
+    echo '
+    #################################################################
+    #####               INSTALL REQUIRED PACKAGES               #####
+    #################################################################'
+    [ "$_DISTRO" == "Ubuntu" ] && ! install_packages "mysql-server" && exit 1
+    [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ] && ! install_packages "mariadb mariadb-server" && exit 1
+
+    if [[ "$_DISTRO" == "Ubuntu" ]]
+    then
+        #start services. By default CentOS does not start services
+        service mysql start >> /dev/null
+        # try to set admin password, ignore if fails
+        [[ -n $DBPASSWD ]] && mysqladmin -u $DB_ADMIN_USER -s password $DB_ADMIN_PASSWD
+    fi
+
+    if [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ]
+    then
+        #start services. By default CentOS does not start services
+        service mariadb start
+        service httpd   start
+        systemctl enable mariadb
+        systemctl enable httpd
+        read -e -p "Do you want to configure mariadb (recommended if not done before) (Y/n)" KK
+        [ "$KK" != "n" -a  "$KK" != "no" ] && mysql_secure_installation
+
+        read -e -p "Do you want to set firewall to grant web access port 80,443  (Y/n)" KK
+        [ "$KK" != "n" -a  "$KK" != "no" ] &&
+            firewall-cmd --permanent --zone=public --add-service=http &&
+            firewall-cmd --permanent --zone=public --add-service=https &&
+            firewall-cmd --reload
+    fi
+}
+
+function _create_db(){
+    echo '
+    #################################################################
+    #####               CREATE DATABASE                         #####
+    #################################################################'
+
+    if db_exists $DB_NAME $TEMPFILE ; then
+        if [[ -n $FORCEDB ]]; then
+            DBDELETEPARAM=""
+            [[ -n $QUIET_MODE ]] && DBDELETEPARAM="-f"
+            mysqladmin --defaults-extra-file="$TEMPFILE" -s drop ${DB_NAME} $DBDELETEPARAM || ! echo "Could not delete ${DB_NAME} database" || exit 1
+        elif [[ -z $QUIET_MODE ]] ; then
+            read -e -p "Drop exiting database '$DB_NAME'. All the content will be lost (y/N)? " KK_
+            [ "$KK_" != "yes" ] && [ "$KK_" != "y" ] && echo "Aborted!" && exit 1
+            mysqladmin --defaults-extra-file="$TEMPFILE" -s drop ${DB_NAME} -f || ! echo "Could not delete ${DB_NAME} database" || exit 1
+        else
+            echo "Database '$DB_NAME' exists. Use option '--forcedb' to force the deletion of the existing one" && exit 1
+        fi
+    fi
+    echo "mysqladmin --defaults-extra-file="$TEMPFILE" -s create ${DB_NAME}"
+    mysqladmin --defaults-extra-file="$TEMPFILE" -s create ${DB_NAME} || ! echo "1 Error creating ${DB_NAME} database" || exit 1
+    echo "CREATE USER $DB_USER@'localhost' IDENTIFIED BY '$DB_PASS';"   | mysql --defaults-extra-file="$TEMPFILE" -s 2>/dev/null || echo "Warning: User '$DB_USER' cannot be created at database. Probably exist"
+    echo "GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '$DB_USER'@'localhost';" | mysql --defaults-extra-file="$TEMPFILE" -s || ! echo "Error: Granting privileges to user '$DB_USER' at database" || exit 1
+    echo " Database '${DB_NAME}' created, user '$DB_USER' password '$DB_PASS'"
+}
+
+function _init_db(){
+    echo '
+    #################################################################
+    #####        INIT DATABASE                                  #####
+    #################################################################'
+    DIRNAME=$(dirname $(readlink -f ${BASH_SOURCE[0]}))
+    ${DIRNAME}/init_mano_db.sh -u"$DB_USER" -p"$DB_PASS" -d"$DB_NAME" -P"$DB_PORT" $DB_HOST_PARAM || ! echo "Error initializing database '$DB_NAME'" || exit 1
+}
+
+function _uninstall_db(){
+echo '
+    #################################################################
+    #####        DELETE DATABASE                                #####
+    #################################################################'
+    DBDELETEPARAM=""
+    [[ -n $QUIET_MODE ]] && DBDELETEPARAM="-f"
+    mysqladmin  --defaults-extra-file="$TEMPFILE" -s drop "${DB_NAME}" $DBDELETEPARAM || ! echo "Error: Could not delete '${DB_NAME}' database" || exit 1
+
+}
+
+function db_exists(){  # (db_name, credential_file)
     RESULT=`mysqlshow --defaults-extra-file="$2" | grep -v Wildcard | grep -o $1`
     if [ "$RESULT" == "$1" ]; then
-        echo " DB $1 exists"
+        # echo " DB $1 exists"
         return 0
     fi
-    echo " DB $1 does not exist"
+    # echo " DB $1 does not exist"
     return 1
 }
 
-
-DBUSER="root"
-DBPASSWD=""
-DBPASSWD_PARAM=""
-QUIET_MODE=""
-FORCEDB=""
-NO_PACKAGES=""
-while getopts ":u:p:hiq-:" o; do
+while getopts ":U:P:d:u:p:H:T:hiq-:" o; do
     case "${o}" in
+        U)
+            export DB_ADMIN_USER="$OPTARG"
+            ;;
+        P)
+            export DB_ADMIN_PASSWD="$OPTARG"
+            ;;
+        d)
+            export DB_NAME="$OPTARG"
+            ;;
         u)
-            export DBUSER="$OPTARG"
+            export DB_USER="$OPTARG"
             ;;
         p)
-            export DBPASSWD="$OPTARG"
-            export DBPASSWD_PARAM="-p$OPTARG"
+            export DB_PASS="$OPTARG"
+            ;;
+        H)
+            export DB_HOST="$OPTARG"
+            export DB_HOST_PARAM="-h$DB_HOST"
+            ;;
+        T)
+            export DB_PORT="$OPTARG"
             ;;
         q)
             export QUIET_MODE=yes
@@ -69,9 +176,10 @@
             [ "${OPTARG}" == "forcedb" ] && FORCEDB="y" && continue
             [ "${OPTARG}" == "quiet" ] && export QUIET_MODE=yes && export DEBIAN_FRONTEND=noninteractive && continue
             [ "${OPTARG}" == "no-install-packages" ] && export NO_PACKAGES=yes && continue
-            echo -e "Invalid option: '--$OPTARG'\nTry $0 --help for more information" >&2 
+            [ "${OPTARG}" == "uninstall" ] &&  UNINSTALL="y" && continue
+            echo -e "Invalid option: '--$OPTARG'\nTry $0 --help for more information" >&2
             exit 1
-            ;; 
+            ;;
         \?)
             echo -e "Invalid option: '-$OPTARG'\nTry $0 --help for more information" >&2
             exit 1
@@ -87,102 +195,48 @@
     esac
 done
 
-HERE=$(realpath $(dirname $0))
-OPENMANO_BASEFOLDER=$(dirname $HERE)
+# Discover Linux distribution
+# try redhat type
+[ -f /etc/redhat-release ] && _DISTRO=$(cat /etc/redhat-release 2>/dev/null | cut  -d" " -f1)
+# if not assuming ubuntu type
+[ -f /etc/redhat-release ] || _DISTRO=$(lsb_release -is  2>/dev/null)
 
-#Discover Linux distribution
-#try redhat type
-[ -f /etc/redhat-release ] && _DISTRO=$(cat /etc/redhat-release 2>/dev/null | cut  -d" " -f1) 
-#if not assuming ubuntu type
-[ -f /etc/redhat-release ] || _DISTRO=$(lsb_release -is  2>/dev/null)            
-
-if [[ -z "$NO_PACKAGES" ]]
-then
-    echo '
-#################################################################
-#####               INSTALL REQUIRED PACKAGES               #####
-#################################################################'
-    [ "$_DISTRO" == "Ubuntu" ] && install_packages "mysql-server"
-    [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ] && install_packages "mariadb mariadb-server"
-
-    if [[ "$_DISTRO" == "Ubuntu" ]]
-    then
-        #start services. By default CentOS does not start services
-        service mysql start >> /dev/null
-        # try to set admin password, ignore if fails
-        [[ -n $DBPASSWD ]] && mysqladmin -u $DBUSER -s password $DBPASSWD
-    fi
-
-    if [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ]
-    then
-        #start services. By default CentOS does not start services
-        service mariadb start
-        service httpd   start
-        systemctl enable mariadb
-        systemctl enable httpd
-        read -e -p "Do you want to configure mariadb (recommended if not done before) (Y/n)" KK
-        [ "$KK" != "n" -a  "$KK" != "no" ] && mysql_secure_installation
-
-        read -e -p "Do you want to set firewall to grant web access port 80,443  (Y/n)" KK
-        [ "$KK" != "n" -a  "$KK" != "no" ] && 
-            firewall-cmd --permanent --zone=public --add-service=http &&
-            firewall-cmd --permanent --zone=public --add-service=https &&
-            firewall-cmd --reload
-    fi
-fi  #[[ -z "$NO_PACKAGES" ]]
+# Creating temporary file for MYSQL installation and initialization"
+TEMPFILE="$(mktemp -q --tmpdir "installdb.XXXXXX")"
+trap 'rm -f "$TEMPFILE"' EXIT
+chmod 0600 "$TEMPFILE"
+echo -e "[client]\n user='${DB_ADMIN_USER}'\n password='$DB_ADMIN_PASSWD'\n host='$DB_HOST'\n port='$DB_PORT'" > "$TEMPFILE"
 
 #check and ask for database user password. Must be done after database installation
-if [[ -n $QUIET_MODE ]]
-then 
+if [[ -z $QUIET_MODE ]]
+then
     echo -e "\nCheking database connection and ask for credentials"
-    while ! mysqladmin -s -u$DBUSER $DBPASSWD_PARAM status >/dev/null
+    # echo "mysqladmin --defaults-extra-file=$TEMPFILE -s status >/dev/null"
+    while ! mysqladmin --defaults-extra-file="$TEMPFILE" -s status >/dev/null
     do
         [ -n "$logintry" ] &&  echo -e "\nInvalid database credentials!!!. Try again (Ctrl+c to abort)"
         [ -z "$logintry" ] &&  echo -e "\nProvide database credentials"
-        read -e -p "database user? ($DBUSER) " DBUSER_
-        [ -n "$DBUSER_" ] && DBUSER=$DBUSER_
-        read -e -s -p "database password? (Enter for not using password) " DBPASSWD_
-        [ -n "$DBPASSWD_" ] && DBPASSWD="$DBPASSWD_" && DBPASSWD_PARAM="-p$DBPASSWD_"
-        [ -z "$DBPASSWD_" ] && DBPASSWD=""           && DBPASSWD_PARAM=""
+        read -e -p "database admin user? ($DB_ADMIN_USER) " DBUSER_
+        [ -n "$DBUSER_" ] && DB_ADMIN_USER=$DBUSER_
+        read -e -s -p "database admin password? (Enter for not using password) " DBPASSWD_
+        [ -n "$DBPASSWD_" ] && DB_ADMIN_PASSWD="$DBPASSWD_"
+        [ -z "$DBPASSWD_" ] && DB_ADMIN_PASSWD=""
+        echo -e "[client]\n user='${DB_ADMIN_USER}'\n password='$DB_ADMIN_PASSWD'\n host='$DB_HOST'\n port='$DB_PORT'" > "$TEMPFILE"
         logintry="yes"
     done
 fi
 
-echo '
-#################################################################
-#####        CREATE DATABASE                                #####
-#################################################################'
-echo -e "\nCreating temporary file for MYSQL installation and initialization"
-TEMPFILE="$(mktemp -q --tmpdir "installopenmano.XXXXXX")"
-trap 'rm -f "$TEMPFILE"' EXIT
-chmod 0600 "$TEMPFILE"
-echo -e "[client]\n user='$DBUSER'\n password='$DBPASSWD'">"$TEMPFILE"
-
-if db_exists "mano_db" $TEMPFILE ; then
-    if [[ -n $FORCEDB ]]; then
-        echo "   Deleting previous database mano_db"
-        DBDELETEPARAM=""
-        [[ -n $QUIET_MODE ]] && DBDELETEPARAM="-f"
-        mysqladmin --defaults-extra-file=$TEMPFILE -s drop mano_db $DBDELETEPARAM || ! echo "Could not delete mano_db database" || exit 1
-        #echo "REVOKE ALL PRIVILEGES ON mano_db.* FROM 'mano'@'localhost';" | mysql --defaults-extra-file=$TEMPFILE -s || ! echo "Failed while creating user mano at database" || exit 1
-        #echo "DELETE USER 'mano'@'localhost';"   | mysql --defaults-extra-file=$TEMPFILE -s || ! echo "Failed while creating user mano at database" || exit 1
-        mysqladmin --defaults-extra-file=$TEMPFILE -s create mano_db || ! echo "Error creating mano_db database" || exit 1
-        echo "CREATE USER 'mano'@'localhost' identified by 'manopw';"   | mysql --defaults-extra-file=$TEMPFILE -s || ! echo "Failed while creating user mano at database"
-        echo "GRANT ALL PRIVILEGES ON mano_db.* TO 'mano'@'localhost';" | mysql --defaults-extra-file=$TEMPFILE -s || ! echo "Failed while creating user mano at database" || exit 1
-        echo " Database 'mano_db' created, user 'mano' password 'manopw'"
-    else
-        echo "Database exists. Use option '--forcedb' to force the deletion of the existing one" && exit 1
-    fi
-else
-    mysqladmin -u$DBUSER $DBPASSWD_PARAM -s create mano_db || ! echo "Error creating mano_db database" || exit 1 
-    echo "CREATE USER 'mano'@'localhost' identified by 'manopw';"   | mysql --defaults-extra-file=$TEMPFILE -s || ! echo "Failed while creating user mano at database" || exit 1
-    echo "GRANT ALL PRIVILEGES ON mano_db.* TO 'mano'@'localhost';" | mysql --defaults-extra-file=$TEMPFILE -s || ! echo "Failed while creating user mano at database" || exit 1
-    echo " Database 'mano_db' created, user 'mano' password 'manopw'"
+if [[ ! -z "$UNINSTALL" ]]
+then
+    _uninstall_db
+    exit
 fi
 
+if [[ -z "$NO_PACKAGES" ]]
+then
+    [ "$USER" != "root" ] && echo "Needed root privileges" >&2 && exit 1
+    _install_mysql_package || exit 1
+fi
 
-echo '
-#################################################################
-#####        INIT DATABASE                                  #####
-#################################################################'
-su $SUDO_USER -c "${OPENMANO_BASEFOLDER}/database_utils/init_mano_db.sh -u mano -p manopw -d mano_db" || ! echo "Failed while initializing database" || exit 1
+_create_db || exit 1
+_init_db   || exit 1
