Redesing upgrade mode.

This commit is contained in:
Christoph 2017-09-26 01:08:07 +02:00
parent 8d1769f0e0
commit 4f61ae3788
2 changed files with 511 additions and 326 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
*.swp
/BAK/* /BAK/*
/log* /log*
/mysql* /mysql*

View File

@ -153,13 +153,26 @@ else
UPDATE_MYSQL=false UPDATE_MYSQL=false
fi fi
if $UPDATE_MYSQL ; then
clear
echo -e "\033[21G\033[32mInstallationsscript für die Mysql Datenbank \033[m"
echo "" echo ""
echononl "Get current MySQL Version.."
CURRENT_VERSION="$(mysql -V | grep -o -E "Distrib\s+[3-9]+\.[0-9]+\.[0-9]+" | awk '{print$2}')"
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Getting current mysql version failed!"
fi
echo ""
fi
#clear
#echo -e "\033[21G\033[32mInstallationsscript für die Mysql Datenbank \033[m"
#echo ""
echo -e "\033[32m--\033[m" echo -e "\033[32m--\033[m"
echo "" echo ""
echo "Gib die Versionsnummer der MySQL-Distribution an." echo "Gib die Versionsnummer der zu installierenden MySQL-Distribution an."
echo "" echo ""
MYSQL_VERSION= MYSQL_VERSION=
while [ "X$MYSQL_VERSION" = "X" ] while [ "X$MYSQL_VERSION" = "X" ]
@ -211,6 +224,19 @@ do
done done
if $UPDATE_MYSQL ; then
echo ""
echononl "Ermittle Installations Verz. der existierenden MySQL Installation."
if [[ -d "$(dirname "$MYSQL_INSTALL_DIR")/mysql-$CURRENT_VERSION" ]]; then
MYSQL_CUR_INSTALL_DIR="$(dirname "$MYSQL_INSTALL_DIR")/mysql-$CURRENT_VERSION"
echo_ok
else
echo_failed
fatal "Kann Datenbank Verz. der installierten Version nicht finden!"
fi
echo ""
fi
echo "" echo ""
echo -e "\033[32m--\033[m" echo -e "\033[32m--\033[m"
echo "" echo ""
@ -226,6 +252,20 @@ do
fi fi
done done
if $UPDATE_MYSQL ; then
echo ""
echononl "Ermittle MySQL-Datenbank Verz. der existierenden MySQL Installation."
if [[ -d "$(dirname "$MYSQL_DATA_DIR")/mysql-$CURRENT_VERSION" ]]; then
MYSQL_CUR_DATA_DIR="$(dirname "$MYSQL_DATA_DIR")/mysql-$CURRENT_VERSION"
echo_ok
else
echo_failed
fatal "Kann Datenbank Verz. der installierten Version nicht finden!"
fi
echo ""
fi
echo "" echo ""
echo -e "\033[32m--\033[m" echo -e "\033[32m--\033[m"
echo "" echo ""
@ -295,12 +335,17 @@ do
fi fi
done done
clear #clear
echo -e "\033[21G\033[32mInstallationsscript für die Mysql Datenbank \033[m" #echo -e "\033[21G\033[32mInstallationsscript für die Mysql Datenbank \033[m"
echo "" echo ""
echo -e "\033[32m--\033[m" echo -e "\033[32m--\033[m"
echo "" echo ""
if ! $UPDATE_MYSQL ; then
echo "Gib ein Passwort für den root user an.." echo "Gib ein Passwort für den root user an.."
else
echo "Gib das 'root' Passwort der bestehenden Installation an"
fi
echo "" echo ""
_MYSQL_ROOT_PW_1="X" _MYSQL_ROOT_PW_1="X"
_MYSQL_ROOT_PW_2="Y" _MYSQL_ROOT_PW_2="Y"
@ -323,23 +368,37 @@ do
if [ "$_MYSQL_ROOT_PW_1" != "$_MYSQL_ROOT_PW_2" ];then if [ "$_MYSQL_ROOT_PW_1" != "$_MYSQL_ROOT_PW_2" ];then
echo -e "\n\t\033[33m\033[1mPassworteingaben sind nicht identisch!\033[m\n" echo -e "\n\t\033[33m\033[1mPassworteingaben sind nicht identisch!\033[m\n"
else else
if $UPDATE_MYSQL ; then
if $(pgrep mysqld_safe > /dev/null 2>&1) ; then
if $(mysql --user="root" --password="$_MYSQL_ROOT_PW_1" -N -s -e 'quit' > /dev/null 2>&1) ; then
MYSQL_ROOT_PW=$_MYSQL_ROOT_PW_1 MYSQL_ROOT_PW=$_MYSQL_ROOT_PW_1
else
echo -e "\n\t\033[33m\033[1mFalsches Passwort\033[m\n"
_MYSQL_ROOT_PW_1=""
fi
else
MYSQL_ROOT_PW=$_MYSQL_ROOT_PW_1
fi
else
MYSQL_ROOT_PW=$_MYSQL_ROOT_PW_1
fi
fi fi
done done
if $UPDATE_MYSQL ; then if $UPDATE_MYSQL ; then
__SYMLINK_INITSCRIPT=nein # __SYMLINK_INITSCRIPT=nein
__SYMLINK_INSTALL_DIR=nein # __SYMLINK_INSTALL_DIR=nein
__SYMLINK_DATA_DIR=nein # __SYMLINK_DATA_DIR=nein
else #else
__SYMLINK_INITSCRIPT=ja __SYMLINK_INITSCRIPT=ja
__SYMLINK_INSTALL_DIR=ja __SYMLINK_INSTALL_DIR=ja
__SYMLINK_DATA_DIR=ja __SYMLINK_DATA_DIR=ja
fi fi
clear #clear
echo -e "\033[21G\033[32mInstallationsscript für die Mysql Datenbank \033[m" #echo -e "\033[21G\033[32mInstallationsscript für die Mysql Datenbank \033[m"
echo "" #echo ""
echo -e "\033[32m--\033[m" echo -e "\033[32m--\033[m"
echo "" echo ""
echo "Symlinks:" echo "Symlinks:"
@ -447,7 +506,12 @@ echo ""
if ! $UPDATE_MYSQL ; then if ! $UPDATE_MYSQL ; then
echo -e "-- \033[33m\033[1mNeusistallation\033[m --" echo -e "-- \033[33m\033[1mNeusistallation\033[m --"
else else
echo -e "-- \033[33m\033[1mUpdate\033[m (Erstzen einer vorhandenen Installation) --" echo -e "-- \033[33m\033[1mUpdate\033[m (Ersetzen einer vorhandenen Installation) --"
echo ""
echo "Current MySQL Version.....: $CURRENT_VERSION"
echo "Current data dir..........: $MYSQL_CUR_DATA_DIR"
echo "Current installation dir..: $MYSQL_CUR_INSTALL_DIR"
echo ""
fi fi
echo "" echo ""
echo "Linuxdistribution.........: $DISTRIBUTION" echo "Linuxdistribution.........: $DISTRIBUTION"
@ -535,7 +599,12 @@ echo "## -" >> ${logdir}/main.log
if ! $UPDATE_MYSQL ; then if ! $UPDATE_MYSQL ; then
echo "## - Neusistallation" >> ${logdir}/main.log echo "## - Neusistallation" >> ${logdir}/main.log
else else
echo "## - Update (Erstzen einer vorhandenen Installation)" >> ${logdir}/main.log echo "## - Update (Ersetzen einer vorhandenen Installation)" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - Current MySQL Version.....: $CURRENT_VERSION" >> ${logdir}/main.log
echo "## - Current installation dir..: $MYSQL_CUR_INSTALL_DIR" >> ${logdir}/main.log
echo "## - Current data dir..........: $MYSQL_CUR_DATA_DIR" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
fi fi
echo "## -" >> ${logdir}/main.log echo "## -" >> ${logdir}/main.log
echo "## - Linuxdistribution.........: $DISTRIBUTION" >> ${logdir}/main.log echo "## - Linuxdistribution.........: $DISTRIBUTION" >> ${logdir}/main.log
@ -560,6 +629,11 @@ echo "" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log echo "" >> ${logdir}/main.log
echo "UPDATE_MYSQL=$UPDATE_MYSQL" >> ${logdir}/main.log echo "UPDATE_MYSQL=$UPDATE_MYSQL" >> ${logdir}/main.log
if ! $UPDATE_MYSQL ; then
echo "CURRENT_VERSION=$CURRENT_VERSION" >> ${logdir}/main.log
echo "MYSQL_CUR_DATA_DIR=$MYSQL_CUR_DATA_DIR" >> ${logdir}/main.log
echo "MYSQL_CUR_INSTALL_DIR=$MYSQL_CUR_INSTALL_DIR" >> ${logdir}/main.log
fi
echo "" >> ${logdir}/main.log echo "" >> ${logdir}/main.log
echo "DISTRIBUTION=$DISTRIBUTION" >> ${logdir}/main.log echo "DISTRIBUTION=$DISTRIBUTION" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log echo "" >> ${logdir}/main.log
@ -586,19 +660,31 @@ elif [ -f /etc/init.d/mysql ];then
_MYSQL_INITSCRIPT="mysql" _MYSQL_INITSCRIPT="mysql"
fi fi
if ! $UPDATE_MYSQL ; then if [[ -z "$_MYSQL_INITSCRIPT" ]] && $UPDATE_MYSQL ; then
fatal "Kein start/stop script gefunden.."
fi
if [ "X${_MYSQL_INITSCRIPT}X" != "XX" ];then echo ""
PID=`ps aux | grep "mysqld_safe" | grep -v grep | awk '{print$2}'` ## - Stop MySQL Service if running
if [ "X${PID}X" != "XX" ];then ## -
echononl "Stoppe mysql Server.." echononl "Stop MySQL Service.."
PID=$(ps aux | grep "mysqld_safe" | grep -v grep | awk '{print$2}')
if [[ "X${PID}X" != "XX" ]];then
if $SYSTEMD_EXISTS ; then
echo "" >> ${logdir}/main.log
echo "systemctl stop ${_MYSQL_INITSCRIPT}" >> ${logdir}/main.log
systemctl stop ${_MYSQL_INITSCRIPT} >> ${logdir}/main.log 2>&1
else
echo "" >> ${logdir}/main.log echo "" >> ${logdir}/main.log
echo "/etc/init.d/$_MYSQL_INITSCRIPT stop" >> ${logdir}/main.log echo "/etc/init.d/$_MYSQL_INITSCRIPT stop" >> ${logdir}/main.log
/etc/init.d/$_MYSQL_INITSCRIPT stop >> ${logdir}/main.log 2>&1 /etc/init.d/$_MYSQL_INITSCRIPT stop >> ${logdir}/main.log 2>&1
fi
sleep 5 sleep 5
PID=`ps aux | grep "mysqld_safe" | grep -v grep | awk '{print$2}'` PID=`ps aux | grep "mysqld_safe" | grep -v grep | awk '{print$2}'`
if [ "X${PID}X" = "XX" ]; then if [[ "X${PID}X" = "XX" ]]; then
echo_ok echo_ok
else else
echo_failed echo_failed
@ -614,9 +700,31 @@ if ! $UPDATE_MYSQL ; then
echo_failed echo_failed
fi fi
fi fi
else
echo_skipped
fi fi
echononl "Verschiebe exitierendes MySQL Datenbank-Verzeichnis ..."
if [ -d $MYSQL_DATA_DIR ]; then
echo "" >> ${logdir}/main.log
echo "mv $MYSQL_DATA_DIR ${MYSQL_DATA_DIR}.`date +\"%Y%m%d-%H%M\"`" >> ${logdir}/main.log
mv $MYSQL_DATA_DIR ${MYSQL_DATA_DIR}.`date +"%Y%m%d-%H%M"` >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Datenbank-Verzeichnis \"${MYSQL_DATA_DIR}\" nicht verschieben..
fi
else
echo_skipped
fi
if ! $UPDATE_MYSQL ; then
if [ "X${_MYSQL_INITSCRIPT}X" != "XX" ];then
## - Entferne symbolische Links aus den Run Level Verzeichnissen ## - Entferne symbolische Links aus den Run Level Verzeichnissen
## - ## -
echononl "Entferne symbolische Links aus den Run Level Verzeichnissen" echononl "Entferne symbolische Links aus den Run Level Verzeichnissen"
@ -639,7 +747,7 @@ if ! $UPDATE_MYSQL ; then
echo_ok echo_ok
else else
echo_failed echo_failed
fatal "Kann Mexistierendes Initskript nicht entfernen." fatal "Kann existierendes Initskript nicht entfernen."
fi fi
fi fi
fi fi
@ -761,6 +869,33 @@ if ! $UPDATE_MYSQL ; then
# fi # fi
echononl "Erstelle Datenbank-Verzeichnis \"$MYSQL_DATA_DIR\".."
echo "" >> ${logdir}/main.log
echo "mkdir -p $MYSQL_DATA_DIR" >> ${logdir}/main.log
mkdir -p $MYSQL_DATA_DIR >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Datenbank-Verzeichnis \"${MYSQL_DATA_DIR}\" nicht erstellen..
fi
else # if ! $UPDATE_MYSQL
echononl "Kopiere exitierendes MySQL Datenbank-Verzeichnis ..."
echo "" >> ${logdir}/main.log
echo "cp -a \"$MYSQL_CUR_DATA_DIR\" \"$MYSQL_DATA_DIR\"" >> ${logdir}/main.log
cp -a "$MYSQL_CUR_DATA_DIR" "$MYSQL_DATA_DIR" >> ${logdir}/main.log
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kopieren \"$MYSQL_CUR_DATA_DIR\" --> \"${MYSQL_DATA_DIR}\" fehlgeschlagen.."
fi
fi # if ! $UPDATE_MYSQL
echononl "Adding Group \"$MYSQL_GROUP\".." echononl "Adding Group \"$MYSQL_GROUP\".."
if cat /etc/group | grep -e "^${MYSQL_GROUP}:" > /dev/null 2>&1 ; then if cat /etc/group | grep -e "^${MYSQL_GROUP}:" > /dev/null 2>&1 ; then
echo_skipped echo_skipped
@ -786,34 +921,8 @@ if ! $UPDATE_MYSQL ; then
fatal Kann User \"${MYSQL_USER}\" nicht erstellen.. fatal Kann User \"${MYSQL_USER}\" nicht erstellen..
fi fi
fi fi
fi
if [ -d $MYSQL_DATA_DIR ]; then
echononl "Verschiebe exitierendes MySQL Datenbank-Verzeichnis ..."
echo "" >> ${logdir}/main.log
echo "mv $MYSQL_DATA_DIR ${MYSQL_DATA_DIR}.`date +\"%Y%m%d-%H%M\"`" >> ${logdir}/main.log
mv $MYSQL_DATA_DIR ${MYSQL_DATA_DIR}.`date +"%Y%m%d-%H%M"` >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Datenbank-Verzeichnis \"${MYSQL_DATA_DIR}\" nicht verschieben..
fi
fi
echononl "Erstelle Datenbank-Verzeichnis \"$MYSQL_DATA_DIR\".."
echo "" >> ${logdir}/main.log
echo "mkdir -p $MYSQL_DATA_DIR" >> ${logdir}/main.log
mkdir -p $MYSQL_DATA_DIR >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Datenbank-Verzeichnis \"${MYSQL_DATA_DIR}\" nicht erstellen..
fi
echononl "Setze Besitzer \"${MYSQL_USER}:${MYSQL_GROUP}\" für Datenbank-Verzeichnis" echononl "Setze Besitzer \"${MYSQL_USER}:${MYSQL_GROUP}\" für Datenbank-Verzeichnis"
echo "" >> ${logdir}/main.log echo "" >> ${logdir}/main.log
echo "chown -R ${MYSQL_USER}:${MYSQL_GROUP} ${MYSQL_DATA_DIR}" >> ${logdir}/main.log echo "chown -R ${MYSQL_USER}:${MYSQL_GROUP} ${MYSQL_DATA_DIR}" >> ${logdir}/main.log
@ -999,6 +1108,98 @@ else
echo_skipped echo_skipped
fi fi
## - Symlink Installationsverzeichnis (i.d.R. /usr/local/mysql)
## -
if $SYMLINK_INSTALL_DIR ; then
echononl "Entferne vorhandenen Symlink `dirname $MYSQL_INSTALL_DIR`/mysql.."
if [[ -h "$(dirname $MYSQL_INSTALL_DIR)/mysql" ]]; then
echo "" >> ${logdir}/main.log
echo "rm \"$(dirname $MYSQL_INSTALL_DIR)/mysql\"" >> ${logdir}/main.log
rm "$(dirname $MYSQL_INSTALL_DIR)/mysql" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Kann Symlink `dirname $MYSQL_INSTALL_DIR`/mysql nicht entfernen..
fi
else
echo_skipped
fi
echononl "Verschiebe Verzeichnis '$(dirname $MYSQL_INSTALL_DIR)/mysql' ..."
if [ -d "$(dirname $MYSQL_INSTALL_DIR)/mysql" ]; then
echo "" >> ${logdir}/main.log
echo "mv \"$(dirname $MYSQL_INSTALL_DIR)/mysql)\" \"$(dirname $MYSQL_INSTALL_DIR)/mysql.$(date +"%Y%m%d-%H%M")" \
>> ${logdir}/main.log
mv "$(dirname $MYSQL_INSTALL_DIR)/mysql" "$(dirname $MYSQL_INSTALL_DIR)/mysql.$(date +"%Y%m%d-%H%M")" \
>> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Kann Installationsverzeichnis \"${MYSQL_INSTALL_DIR}\" nicht verschieben..
fi
else
echo_skipped
fi
echononl "Erstelle Symlink $(dirname $MYSQL_INSTALL_DIR)/mysql --> $MYSQL_INSTALL_DIR"
echo "" >> ${logdir}/main.log
echo "ln -s \"$(basename $MYSQL_INSTALL_DIR)\" \"$(dirname $MYSQL_INSTALL_DIR)/mysql\"" >> ${logdir}/main.log
ln -s "$(basename $MYSQL_INSTALL_DIR)" "$(dirname $MYSQL_INSTALL_DIR)/mysql" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Kann Symlink `basename $MYSQL_INSTALL_DIR` --> `dirname $MYSQL_INSTALL_DIR`/mysql nicht erstellen ..
fi
fi
## - Symlink Datenverzeichnis
## -
if $SYMLINK_DATA_DIR ; then
if [ -h "$(dirname $MYSQL_DATA_DIR)/mysql" ]; then
echononl "Entferne vorhandenen Symlink '$(dirname $MYSQL_DATA_DIR)/mysql'.."
echo "" >> ${logdir}/main.log
echo "rm $(dirname $MYSQL_DATA_DIR)/mysql" >> ${logdir}/main.log
rm $(dirname $MYSQL_DATA_DIR)/mysql >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Kann Symlink `dirname $MYSQL_DATA_DIR`/mysql nicht entfernen..
fi
fi
if [ -d "$(dirname $MYSQL_DATA_DIR)/mysql" ]; then
echononl "Verschiebe Verzeichnis '$(dirname $MYSQL_DATA_DIR)/mysql' ..."
echo "" >> ${logdir}/main.log
echo "mv \"$(dirname $MYSQL_DATA_DIR)/mysql\" \"$(dirname $MYSQL_DATA_DIR)/mysql.$(date +"%Y%m%d-%H%M")" \
>> ${logdir}/main.log
mv "$(dirname $MYSQL_DATA_DIR)/mysql" "$(dirname $MYSQL_DATA_DIR)/mysql.$(date +"%Y%m%d-%H%M")" \
>> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Kann Datenverzeichnis \"${MYSQL_DATA_DIR}\" nicht verschieben..
fi
fi
echononl "Erstelle Symlink `dirname $MYSQL_DATA_DIR`/mysql --> $MYSQL_DATA_DIR"
echo "" >> ${logdir}/main.log
echo "ln -s \"$(basename $MYSQL_DATA_DIR)\" \"$(dirname $MYSQL_DATA_DIR)/mysql\"" >> ${logdir}/main.log
ln -s "$(basename $MYSQL_DATA_DIR)" "$(dirname $MYSQL_DATA_DIR)/mysql" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Kann Symlink $(basename $MYSQL_DATA_DIR) --> $(dirname $MYSQL_DATA_DIR)/mysql nicht erstellen .."
fi
fi
if $SYMLINK_INITSCRIPT ; then if $SYMLINK_INITSCRIPT ; then
@ -1018,7 +1219,8 @@ if $SYMLINK_INITSCRIPT ; then
echononl "Erstelle Symlink \"/etc/init.d/mysql.server\".." echononl "Erstelle Symlink \"/etc/init.d/mysql.server\".."
echo "" >> ${logdir}/main.log echo "" >> ${logdir}/main.log
echo "ln -s $MYSQL_INSTALL_DIR/support-files/mysql.server /etc/init.d/mysql.server" >> ${logdir}/main.log echo "ln -s $MYSQL_INSTALL_DIR/support-files/mysql.server /etc/init.d/mysql.server" >> ${logdir}/main.log
ln -s $MYSQL_INSTALL_DIR/support-files/mysql.server /etc/init.d/mysql.server >> ${logdir}/main.log 2>&1 echo "ln -s \"$(dirname $MYSQL_INSTALL_DIR)/mysql/support-files/mysql.server\" \"/etc/init.d/mysql.server\"" >> ${logdir}/main.log
ln -s "$(dirname $MYSQL_INSTALL_DIR)/mysql/support-files/mysql.server" /etc/init.d/mysql.server >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then if [ "$?" = "0" ]; then
echo_ok echo_ok
else else
@ -1034,99 +1236,11 @@ if $SYMLINK_INITSCRIPT ; then
echo_ok echo_ok
else else
echo_failed echo_failed
fatal "Kann \"ulimit\" im Startscript nicht setzen /etc/init.d/mysql.server nicht setzen.." error "Kann \"ulimit\" im Startscript nicht setzen /etc/init.d/mysql.server nicht setzen.."
fi fi
fi fi
## - Symlink Installationsverzeichnis (i.d.R. /usr/local/mysql)
## -
if $SYMLINK_INSTALL_DIR ; then
if [ -h `dirname $MYSQL_INSTALL_DIR`/mysql ]; then
echononl "Entferne vorhandenen Symlink `dirname $MYSQL_INSTALL_DIR`/mysql.."
echo "" >> ${logdir}/main.log
echo "rm `dirname $MYSQL_INSTALL_DIR`/mysql" >> ${logdir}/main.log
rm `dirname $MYSQL_INSTALL_DIR`/mysql >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Kann Symlink `dirname $MYSQL_INSTALL_DIR`/mysql nicht entfernen..
fi
fi
if [ -d `dirname $MYSQL_INSTALL_DIR`/mysql ]; then
echononl "Verschiebe Verzeichnis `dirname $MYSQL_INSTALL_DIR`/mysql ..."
echo "" >> ${logdir}/main.log
echo "mv `dirname $MYSQL_INSTALL_DIR`/mysql `dirname $MYSQL_INSTALL_DIR`/mysql.`date +\"%Y%m%d-%H%M\"`" \
>> ${logdir}/main.log
mv `dirname $MYSQL_INSTALL_DIR`/mysql `dirname $MYSQL_INSTALL_DIR`/mysql.`date +"%Y%m%d-%H%M"` \
>> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Kann Installationsverzeichnis \"${MYSQL_INSTALL_DIR}\" nicht verschieben..
fi
fi
echononl "Erstelle Symlink `dirname $MYSQL_INSTALL_DIR`/mysql --> $MYSQL_INSTALL_DIR"
echo "" >> ${logdir}/main.log
echo "ln -s `basename $MYSQL_INSTALL_DIR` `dirname $MYSQL_INSTALL_DIR`/mysql" >> ${logdir}/main.log
ln -s `basename $MYSQL_INSTALL_DIR` `dirname $MYSQL_INSTALL_DIR`/mysql >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Kann Symlink `basename $MYSQL_INSTALL_DIR` --> `dirname $MYSQL_INSTALL_DIR`/mysql nicht erstellen ..
fi
fi
## - Symlink Datenverzeichnis
## -
if $SYMLINK_DATA_DIR ; then
if [ -h `dirname $MYSQL_DATA_DIR`/mysql ]; then
echononl "Entferne vorhandenen Symlink `dirname $MYSQL_DATA_DIR`/mysql.."
echo "" >> ${logdir}/main.log
echo "rm `dirname $MYSQL_DATA_DIR`/mysql" >> ${logdir}/main.log
rm `dirname $MYSQL_DATA_DIR`/mysql >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Kann Symlink `dirname $MYSQL_DATA_DIR`/mysql nicht entfernen..
fi
fi
if [ -d `dirname $MYSQL_DATA_DIR`/mysql ]; then
echononl "Verschiebe Verzeichnis `dirname $MYSQL_DATA_DIR`/mysql ..."
echo "" >> ${logdir}/main.log
echo "mv `dirname $MYSQL_DATA_DIR`/mysql `dirname $MYSQL_DATA_DIR`/mysql.`date +\"%Y%m%d-%H%M\"`" \
>> ${logdir}/main.log
mv `dirname $MYSQL_DATA_DIR`/mysql `dirname $MYSQL_DATA_DIR`/mysql.`date +"%Y%m%d-%H%M"` \
>> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Kann Datenverzeichnis \"${MYSQL_DATA_DIR}\" nicht verschieben..
fi
fi
echononl "Erstelle Symlink `dirname $MYSQL_DATA_DIR`/mysql --> $MYSQL_DATA_DIR"
echo "" >> ${logdir}/main.log
echo "ln -s `basename $MYSQL_DATA_DIR` `dirname $MYSQL_DATA_DIR`/mysql" >> ${logdir}/main.log
ln -s `basename $MYSQL_DATA_DIR` `dirname $MYSQL_DATA_DIR`/mysql >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Kann Symlink `basename $MYSQL_DATA_DIR` --> `dirname $MYSQL_DATA_DIR`/mysql nicht erstellen ..
fi
fi
echononl "Füge `dirname $MYSQL_INSTALL_DIR`/mysql/bin zur PATH Variable hinzu .." echononl "Füge `dirname $MYSQL_INSTALL_DIR`/mysql/bin zur PATH Variable hinzu .."
if [ -f /etc/profile ]; then if [ -f /etc/profile ]; then
@ -1178,6 +1292,7 @@ fi
echo echo
echononl "Richte MySQL Systemtabellen ein.." echononl "Richte MySQL Systemtabellen ein.."
if ! $UPDATE_MYSQL ; then
cd $MYSQL_INSTALL_DIR cd $MYSQL_INSTALL_DIR
echo "" >> ${logdir}/main.log echo "" >> ${logdir}/main.log
echo "./bin/mysqld --initialize-insecure \ " >> ${logdir}/main.log echo "./bin/mysqld --initialize-insecure \ " >> ${logdir}/main.log
@ -1199,6 +1314,9 @@ else
echo_failed echo_failed
fatal Das Einrichten der MySQL Systemtabellen ist fehlgeschlagen.. fatal Das Einrichten der MySQL Systemtabellen ist fehlgeschlagen..
fi fi
else
echo_skipped
fi
echononl "Create directory \"mysql-files\".." echononl "Create directory \"mysql-files\".."
cd $MYSQL_INSTALL_DIR cd $MYSQL_INSTALL_DIR
@ -1251,8 +1369,8 @@ else
fi fi
if [ -f ${MYSQL_INSTALL_DIR}/my.cnf ]; then
echononl "Sichere Konfigurationsdatei.." echononl "Sichere Konfigurationsdatei.."
if [ -f ${MYSQL_INSTALL_DIR}/my.cnf ]; then
echo "" >> ${logdir}/main.log echo "" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/my.cnf ${MYSQL_INSTALL_DIR}" >> ${logdir}/main.log echo "${MYSQL_INSTALL_DIR}/my.cnf ${MYSQL_INSTALL_DIR}" >> ${logdir}/main.log
mv ${MYSQL_INSTALL_DIR}/my.cnf ${MYSQL_INSTALL_DIR}/my.cnf.ORIG mv ${MYSQL_INSTALL_DIR}/my.cnf ${MYSQL_INSTALL_DIR}/my.cnf.ORIG
@ -1262,8 +1380,30 @@ if [ -f ${MYSQL_INSTALL_DIR}/my.cnf ]; then
echo_failed echo_failed
error Konnte Konfigurationsdatei ${MYSQL_INSTALL_DIR}/my.cnf nicht sichern.. error Konnte Konfigurationsdatei ${MYSQL_INSTALL_DIR}/my.cnf nicht sichern..
fi fi
else
echo_skipped
fi fi
_new_cnf_needed=false
if $UPDATE_MYSQL ; then
echononl "Copy 'my.cnf from old installation to the new one.."
echo "" >> ${logdir}/main.log
echo "cp -a \"${MYSQL_CUR_INSTALL_DIR}/my.cnf\" \"${MYSQL_INSTALL_DIR}/my.cnf\"" >> ${logdir}/main.log
if [[ -f "${MYSQL_CUR_INSTALL_DIR}/my.cnf" ]] ; then
cp -a "${MYSQL_CUR_INSTALL_DIR}/my.cnf" "${MYSQL_INSTALL_DIR}/my.cnf" >> ${logdir}/main.log
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
_new_cnf_needed=true
error "Konnte Konfigurationsdatei 'my.cnf' nicht vom alten in das neue Installations Verz.kopieren.."
fi
else
_new_cnf_needed=true
fi
fi
if ! $UPDATE_MYSQL || $_new_cnf_needed ; then
echononl "Erstelle Konfigurationsdatei ${MYSQL_INSTALL_DIR}/my.cnf.." echononl "Erstelle Konfigurationsdatei ${MYSQL_INSTALL_DIR}/my.cnf.."
echo "" >> ${logdir}/main.log echo "" >> ${logdir}/main.log
@ -2064,6 +2204,7 @@ else
warn "Konnte ${MYSQL_SRC_BASE_DIR}/stopwords_utf8_iso8859-15.txt finden." warn "Konnte ${MYSQL_SRC_BASE_DIR}/stopwords_utf8_iso8859-15.txt finden."
fi fi
fi
#echononl "Kopiere Startscript nach /etc/init.d/mysql.server.." #echononl "Kopiere Startscript nach /etc/init.d/mysql.server.."
#echo "" >> ${logdir}/main.log #echo "" >> ${logdir}/main.log
@ -2101,8 +2242,6 @@ if ! $UPDATE_MYSQL ; then
if $SYSTEMD_EXISTS ; then if $SYSTEMD_EXISTS ; then
echo "systemctl enable mysql.server" >> ${logdir}/main.log echo "systemctl enable mysql.server" >> ${logdir}/main.log
systemctl enable mysql.server >> ${logdir}/main.log 2>&1 systemctl enable mysql.server >> ${logdir}/main.log 2>&1
echo "systemctl daemon-reload" >> ${logdir}/main.log
systemctl daemon-reload >> ${logdir}/main.log 2>&1
else else
echo "update-rc.d mysql.server defaults" >> ${logdir}/main.log echo "update-rc.d mysql.server defaults" >> ${logdir}/main.log
update-rc.d mysql.server defaults >> ${logdir}/main.log 2>&1 update-rc.d mysql.server defaults >> ${logdir}/main.log 2>&1
@ -2117,6 +2256,22 @@ if ! $UPDATE_MYSQL ; then
error "Konnte MySQL Init Script Links (autom. boot) nicht erstellen.." error "Konnte MySQL Init Script Links (autom. boot) nicht erstellen.."
fi fi
fi fi
fi
echononl "Run 'systemctl daemon-reload' to reload units."
if $SYSTEMD_EXISTS ; then
echo "" >> ${logdir}/main.log
echo "systemctl daemon-reload" >> ${logdir}/main.log
systemctl daemon-reload >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Run 'systemctl daemon-reload' failed!"
fi
else
echo_skipped
fi
echononl "Starte MySQL Datenbankserver.." echononl "Starte MySQL Datenbankserver.."
echo "" >> ${logdir}/main.log echo "" >> ${logdir}/main.log
@ -2133,12 +2288,11 @@ if ! $UPDATE_MYSQL ; then
echo_failed echo_failed
error Konnte MySQL Datenbankserver nicht starten.. error Konnte MySQL Datenbankserver nicht starten..
fi fi
fi
echononl "Run \"mysql_upgrade -uroot\".." echononl "Run \"mysql_upgrade -uroot\" - this may take some (long) time.."
echo "" >> ${logdir}/main.log echo "" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql_upgrade -uroot" >> ${logdir}/main.log echo "${MYSQL_INSTALL_DIR}/bin/mysql_upgrade -uroot -p$MYSQL_ROOT_PW" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql_upgrade -uroot >> ${logdir}/main.log 2>&1 ${MYSQL_INSTALL_DIR}/bin/mysql_upgrade -uroot -p$MYSQL_ROOT_PW >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then if [ "$?" = "0" ]; then
echo_ok echo_ok
else else
@ -2146,10 +2300,16 @@ else
error "Script \"mysql_upgrade -uroot\" failed!" error "Script \"mysql_upgrade -uroot\" failed!"
fi fi
if ! $UPDATE_MYSQL ; then
## - Delete rows with empty 'User' from table mysql.user
## -
echo "" >> ${logdir}/main.log echo "" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e \"DELETE FROM user where User = ''\"" >> ${logdir}/main.log echo "${MYSQL_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e \"DELETE FROM user where User = ''\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e "DELETE FROM user where User = ''" >> ${logdir}/main.log 2>&1 ${MYSQL_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e "DELETE FROM user where User = ''" >> ${logdir}/main.log 2>&1
## - Set root password
## -
echononl "Setze root Passwort für den MySQL Zugang" echononl "Setze root Passwort für den MySQL Zugang"
echo "" >> ${logdir}/main.log echo "" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e \"UPDATE user set authentication_string = password('$MYSQL_ROOT_PW')\"" >> ${logdir}/main.log echo "${MYSQL_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e \"UPDATE user set authentication_string = password('$MYSQL_ROOT_PW')\"" >> ${logdir}/main.log
@ -2162,6 +2322,8 @@ else
error Konnte MySQL root Zugang fü den MySQL Server nicht setzen.. error Konnte MySQL root Zugang fü den MySQL Server nicht setzen..
fi fi
## - Flush privileges
## -
echononl "Neu Einlesen der Berechtigung (MySQL Server).." echononl "Neu Einlesen der Berechtigung (MySQL Server).."
echo "" >> ${logdir}/main.log echo "" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e \"FLUSH PRIVILEGES\"" >> ${logdir}/main.log echo "${MYSQL_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e \"FLUSH PRIVILEGES\"" >> ${logdir}/main.log
@ -2172,8 +2334,29 @@ else
echo_failed echo_failed
error Das Laden/Erneuern der Berechtigungen für die MySQL Datenbank ist fehlgeschlagen.. error Das Laden/Erneuern der Berechtigungen für die MySQL Datenbank ist fehlgeschlagen..
fi fi
fi
_sys_maint_cnf_needed=false
if $UPDATE_MYSQL ; then
echononl "Copy 'sys-maint.cnf from old installation to the new one.."
echo "" >> ${logdir}/main.log
echo "cp -a \"${MYSQL_CUR_INSTALL_DIR}/sys-maint.cnf\" \"${MYSQL_INSTALL_DIR}/sys-maint.cnf\"" >> ${logdir}/main.log
if [[ -f "${MYSQL_CUR_INSTALL_DIR}/my.cnf" ]] ; then
cp -a "${MYSQL_CUR_INSTALL_DIR}/my.cnf" "${MYSQL_INSTALL_DIR}/my.cnf" >> ${logdir}/main.log
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
_sys_maint_cnf_needed=true
error "Konnte Konfigurationsdatei 'sys-maint.cnf' nicht vom alten in das neue Installations Verz.kopieren.."
fi
else
_sys_maint_cnf_needed=true
fi
fi
if ! $UPDATE_MYSQL || $_sys_maint_cnf_needed ; then
echo echo
echononl "Erstelle Passwort für maintance (MySQL) User.." echononl "Erstelle Passwort für maintance (MySQL) User.."
echo "" >> ${logdir}/main.log echo "" >> ${logdir}/main.log
@ -2248,6 +2431,7 @@ else
echo_failed echo_failed
error Konnte Konfigurationsdatei \"${MYSQL_INSTALL_DIR}/sys-maint.cnf\" nicht erstellen.. error Konnte Konfigurationsdatei \"${MYSQL_INSTALL_DIR}/sys-maint.cnf\" nicht erstellen..
fi fi
fi
echononl "Erstelle Logrotate Definitionsdatei /etc/logrotate.d/mysql.." echononl "Erstelle Logrotate Definitionsdatei /etc/logrotate.d/mysql.."
@ -2282,4 +2466,4 @@ fi
echo echo
exit exit 0