#!/usr/bin/sh #---------------------------------------------------------------------------- # /var/install/bin/mysql-common-tools-update-db - MariaDB Server update # # Creation: 2014-03-06 hbfl # Last Update: $Id$ # # Copyright (c) 2014-@@YEAR@@ Holger Bruenjes, holgerbruenjes(at)gmx(dot)net # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. #---------------------------------------------------------------------------- #include eislib . /var/install/include/eislib #debug=true if ${debug:-false} then exec 2>/tmp/$(basename ${0})-trace$$.log set -x ask_debug=true export ask_debug fi admin_user='root' admin_pass='' PasswordParam="" ASK=/var/install/bin/ask CAT=/usr/bin/cat RM=/usr/bin/rm MKTEMP=/usr/bin/mktemp # --------------------------------------------------------------------------- # defaults # --------------------------------------------------------------------------- get_defaults() { # default values . /srv/mysql/defaults.info } # --------------------------------------------------------------------------- # update database # --------------------------------------------------------------------------- update_database() { rm -f /srv/mysql/${my_path}/update-install # remove old processes and pid files if [ -e ${mysql_pid_file} ] then if [ -f /usr/sbin/service ] then /usr/sbin/service stop ${package_name} else /etc/init.d/${package_name} stop fi rm -f ${mysql_pid_file} fi mysql_start=$(grep "^START_${project_name}" /etc/config.d/${package_name} | sed "s|#.*$||; s/^.*=['\"]\(.*\)['\"].*$/\1/") if [ "${mysql_start}" = "yes" ] then # start new if [ -f /etc/init.d/${package_name} ] then /etc/init.d/${package_name} --skip start elif [ -f /usr/lib/systemd/system/${package_name}.service ] then my_version="$(${mysql_basedir}/${db_mysqld} ${skip_ssl} --version 2>/dev/null | /usr/bin/gawk '/Ver/ {print $3}' | /usr/bin/cut -d'.' -f-2)" case ${my_path} in 11*) echo "MYSQL_OPTION='--skip-networking'" >/etc/sysconfig/${package_name} ;; *) echo "MYSQL_OPTION='--skip-grant-tables --skip-networking'" >/etc/sysconfig/${package_name} ;; esac /usr/sbin/service --msg=" * Starting MariaDB/MySQL database: server ${my_version} insecure" start ${package_name}.service rm -f /etc/sysconfig/${package_name} fi if [ ! -e ${mysql_pid_file} ] then echo 'MariaDB/MySQL ERROR: cannot start!' fi fi # check MySQL, add backup and add root password if [ -e ${mysql_pid_file} ] then # check status from mysql database root, if exists ${mysql_basedir}/${db_mysqladmin} --socket=${mysql_socket} \ --user=root status >/dev/null 2>&1 if [ ${?} -eq 0 ] then __status=true fi password='' if ! "${__status:-false}" then echo _ask_tmpfile=$(${MKTEMP} -t .XXXXXXXXXXXXX) ${ASK} 'Set Password for MariaDB/MySQL user root:' 'yes' >${_ask_tmpfile} rc=${?} read answer < ${_ask_tmpfile} ${RM} -f ${_ask_tmpfile} admin_user="root" if [ "${answer}" = "yes" ] then # set root password /var/install/bin/mysql-common-tools-userpass -nu=root ${package_name} ${mysql_basedir}/${db_mysqladmin} --socket=${mysql_socket} \ status >/dev/null 2>&1 if [ ${?} -eq 0 ] then __status=true fi fi fi if "${__status:-false}" then # force upgrade case ${my_path} in 11*) ${mysql_basedir}/${db_mysql_upgrade} \ --socket=${mysql_socket} --force ${verbose} & echo -n " Please wait ..." while [ -n "$(ps --no-headers $!)" ] do for s in / - \\ \| do printf "\r[$s]" sleep .1 done done printf "\r" ;; *) ${mysql_basedir}/${db_mysql_upgrade} \ --defaults-file=/etc/mysql/my${my_path}.cnf \ --socket=${mysql_socket} \ ${verbose} \ --user=${admin_user:-root} \ ${PasswordParam} --force & echo -n " Please wait ..." while [ -n "$(ps --no-headers $!)" ] do for s in / - \\ \| do printf "\r[$s]" sleep .1 done done printf "\r" ;; esac if [ ! -f /usr/bin/systemctl ] then /etc/init.d/${package_name} restart else if [ ! -f etc/init.d/${package_name} ] then service='.service' fi /usr/sbin/service restart ${package_name}${service} fi else echo 'datetime' >/srv/mysql/${my_path}/update-install fi else echo 'datetime' >/srv/mysql/${my_path}/update-install fi } # --------------------------------------------------------------------------- # main # --------------------------------------------------------------------------- main() { verbose='' # read parameter while [ ${#} -ne 0 ] do case "${1}" in --quiet) verbose='--skip-verbose' shift ;; --project) package_name="${2}" project_name=$(echo ${package_name} | tr [:lower:] [:upper:]) my_path=$(echo "${package_name}" | sed 's|[^[:digit:]]||g') # include config . /etc/config.d/${package_name} eval ssl_use='${'${project_name}'_SSL_USE:-no}' if [ ${my_path:-110} = 114 ] && [ "${ssl_use}" != "yes" ] then skip_ssl='--skip-ssl' fi shift 2 ;; esac done get_defaults update_database exit 0 } # --------------------------------------------------------------------------- # call function main # --------------------------------------------------------------------------- main "${@}" # --------------------------------------------------------------------------- # end # ---------------------------------------------------------------------------