diff --git a/database_utils/install-db-server.sh b/database_utils/install-db-server.sh
index 5a9b9ab..1954e87 100755
--- a/database_utils/install-db-server.sh
+++ b/database_utils/install-db-server.sh
@@ -1,21 +1,87 @@
 #!/usr/bin/env bash
 
+DB_NAME='vim_db'
+DB_ADMIN_USER="root"
+DB_USER="vim"
+DB_PASS="vimpw"
+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 openvim database server"
+    echo -e "Install openvim database server and the needed packages"
     echo -e "  OPTIONS"
-    echo -e "     -U USER:    database admin user. 'root' by default. 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: d database name, default name  vim_db"
-    echo -e "     -u: database user, default name  vim"
-    echo -e "     -p: database pass, default name  vimpw"
+    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 vim_db DB, deleting previous database if exists and creating a new one"
-    echo -e "     --no-install-packages: <deprecate> 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 DB, by default vim_db"
+    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(){
+    [ -x /usr/bin/apt-get ] && apt-get install -y $*
+    [ -x /usr/bin/yum ]     && yum install     -y $*   
+    
+    #check properly installed
+    for PACKAGE in $*
+    do
+        PACKAGE_INSTALLED="no"
+        [ -x /usr/bin/apt-get ] && dpkg -l $PACKAGE            &>> /dev/null && PACKAGE_INSTALLED="yes"
+        [ -x /usr/bin/yum ]     && yum list installed $PACKAGE &>> /dev/null && PACKAGE_INSTALLED="yes" 
+        if [ "$PACKAGE_INSTALLED" = "no" ]
+        then
+            echo "failed to install package '$PACKAGE'. Revise network connectivity and try again" >&2
+            exit 1
+       fi
+    done
+}
 
+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(){
@@ -23,32 +89,25 @@
     #################################################################
     #####               CREATE DATABASE                         #####
     #################################################################'
-    echo -e "\nCreating temporary file for MYSQL installation and initialization"
-    TEMPFILE="$(mktemp -q --tmpdir "installopenvim.XXXXXX")"
-    trap 'rm -f "$TEMPFILE"' EXIT
-    chmod 0600 "$TEMPFILE"
-    echo -e "[client]\n user='${DB_ADMIN_USER}'\n password='$DB_ADMIN_PASSWD'">"$TEMPFILE"
 
     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
-            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 || ! echo "2 Failed while creating user ${DB_USER}"
-            echo "GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO $DB_USER@'localhost';" | mysql --defaults-extra-file=$TEMPFILE -s || ! echo "3 Failed while granting privileges to user ${DB_USER} at database ${DB_NAME}" || exit 1
-            echo " Database '${DB_NAME}' created, user $DB_USER password '$DB_PASS'"
+            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 exists. Use option '--forcedb' to force the deletion of the existing one" && exit 1
+            echo "Database '$DB_NAME' exists. Use option '--forcedb' to force the deletion of the existing one" && exit 1
         fi
-    else
-        echo "mysqladmin -u$DB_ADMIN_USER $DBPASSWD_PARAM -s create ${DB_NAME}"
-
-        mysqladmin -u$DB_ADMIN_USER $DBPASSWD_PARAM -s create ${DB_NAME} || ! echo "4 Error creating ${DB_NAME} database" || exit 1
-        echo "CREATE USER $DB_USER@'localhost' IDENTIFIED BY '$DB_PASS';"   | mysql --defaults-extra-file=$TEMPFILE -s || ! echo "Failed while creating user vim at database"
-        echo "GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO $DB_USER@'localhost';" | mysql --defaults-extra-file=$TEMPFILE -s || ! echo "Failed giving creating user vim at database" || exit 1
-        echo " Database '${DB_NAME}' created, user $DB_USER password '$DB_PASS'"
     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(){
@@ -57,7 +116,7 @@
     #####        INIT DATABASE                                  #####
     #################################################################'
     DIRNAME=$(dirname $(readlink -f ${BASH_SOURCE[0]}))
-    su $SUDO_USER -c "${DIRNAME}/init_vim_db.sh -u $DB_USER -p $DB_PASS -d ${DB_NAME}" || ! echo "Failed while initializing database" || exit 1
+    ${DIRNAME}/init_vim_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(){
@@ -67,36 +126,27 @@
     #################################################################'
     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
+    mysqladmin  --defaults-extra-file="$TEMPFILE" -s drop "${DB_NAME}" $DBDELETEPARAM || ! echo "Error: Could not delete '${DB_NAME}' database" || exit 1
 
 }
-function db_exists() {
+
+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
 }
-DB_NAME='vim_db'
-DB_ADMIN_USER="root"
-DB_USER="vim"
-DB_PASS="vimpw"
-DB_ADMIN_PASSWD=""
-DBPASSWD_PARAM=""
-QUIET_MODE=""
-FORCEDB=""
-NO_PACKAGES=""
-UNINSTALL=""
-while getopts ":U:P:d: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"
-            export DBPASSWD_PARAM="-p$OPTARG"
             ;;
         d)
             export DB_NAME="$OPTARG"
@@ -107,6 +157,13 @@
         p)
             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
             export DEBIAN_FRONTEND=noninteractive
@@ -138,35 +195,33 @@
     esac
 done
 
-HERE=$(realpath $(dirname $0))
-OPENVIM_BASEFOLDER=$(dirname $HERE)
-[ "$USER" != "root" ] && echo "Needed root privileges" >&2 && exit -1
-
-if [[ -z "$SUDO_USER" ]] || [[ "$SUDO_USER" = "root" ]]
-then
-    export SUDO_USER='root'
-fi
-
-#Discover Linux distribution
-#try redhat type
+# 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
+# if not assuming ubuntu type
 [ -f /etc/redhat-release ] || _DISTRO=$(lsb_release -is  2>/dev/null)
 
+# 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 ]]
+if [[ -z $QUIET_MODE ]]
 then
     echo -e "\nCheking database connection and ask for credentials"
-    echo "mysqladmin -s -u$DB_ADMIN_USER $DBPASSWD_PARAM status >/dev/null"
-    while ! mysqladmin -s -u$DB_ADMIN_USER $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? ($DB_ADMIN_USER) " DBUSER_
+        read -e -p "database admin user? ($DB_ADMIN_USER) " DBUSER_
         [ -n "$DBUSER_" ] && DB_ADMIN_USER=$DBUSER_
-        read -e -s -p "database password? (Enter for not using password) " DBPASSWD_
-        [ -n "$DBPASSWD_" ] && DB_ADMIN_PASSWD="$DBPASSWD_" && DBPASSWD_PARAM="-p$DBPASSWD_"
-        [ -z "$DBPASSWD_" ] && DB_ADMIN_PASSWD=""           && DBPASSWD_PARAM=""
+        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
@@ -177,11 +232,11 @@
     exit
 fi
 
-
 if [[ -z "$NO_PACKAGES" ]]
 then
-    _create_db
-    _init_db
+    [ "$USER" != "root" ] && echo "Needed root privileges" >&2 && exit 1
+    _install_mysql_package || exit 1
 fi
 
-
+_create_db || exit 1
+_init_db   || exit 1
