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/*
/log*
/mysql*

View File

@ -153,13 +153,26 @@ else
UPDATE_MYSQL=false
fi
if $UPDATE_MYSQL ; then
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 ""
#clear
#echo -e "\033[21G\033[32mInstallationsscript für die Mysql Datenbank \033[m"
#echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Gib die Versionsnummer der MySQL-Distribution an."
echo "Gib die Versionsnummer der zu installierenden MySQL-Distribution an."
echo ""
MYSQL_VERSION=
while [ "X$MYSQL_VERSION" = "X" ]
@ -211,6 +224,19 @@ do
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 -e "\033[32m--\033[m"
echo ""
@ -226,6 +252,20 @@ do
fi
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 -e "\033[32m--\033[m"
echo ""
@ -295,12 +335,17 @@ do
fi
done
clear
echo -e "\033[21G\033[32mInstallationsscript für die Mysql Datenbank \033[m"
#clear
#echo -e "\033[21G\033[32mInstallationsscript für die Mysql Datenbank \033[m"
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Gib ein Passwort für den root user an.."
if ! $UPDATE_MYSQL ; then
echo "Gib ein Passwort für den root user an.."
else
echo "Gib das 'root' Passwort der bestehenden Installation an"
fi
echo ""
_MYSQL_ROOT_PW_1="X"
_MYSQL_ROOT_PW_2="Y"
@ -323,23 +368,37 @@ do
if [ "$_MYSQL_ROOT_PW_1" != "$_MYSQL_ROOT_PW_2" ];then
echo -e "\n\t\033[33m\033[1mPassworteingaben sind nicht identisch!\033[m\n"
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
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
done
if $UPDATE_MYSQL ; then
__SYMLINK_INITSCRIPT=nein
__SYMLINK_INSTALL_DIR=nein
__SYMLINK_DATA_DIR=nein
else
# __SYMLINK_INITSCRIPT=nein
# __SYMLINK_INSTALL_DIR=nein
# __SYMLINK_DATA_DIR=nein
#else
__SYMLINK_INITSCRIPT=ja
__SYMLINK_INSTALL_DIR=ja
__SYMLINK_DATA_DIR=ja
fi
clear
echo -e "\033[21G\033[32mInstallationsscript für die Mysql Datenbank \033[m"
echo ""
#clear
#echo -e "\033[21G\033[32mInstallationsscript für die Mysql Datenbank \033[m"
#echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Symlinks:"
@ -447,7 +506,12 @@ echo ""
if ! $UPDATE_MYSQL ; then
echo -e "-- \033[33m\033[1mNeusistallation\033[m --"
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
echo ""
echo "Linuxdistribution.........: $DISTRIBUTION"
@ -535,7 +599,12 @@ echo "## -" >> ${logdir}/main.log
if ! $UPDATE_MYSQL ; then
echo "## - Neusistallation" >> ${logdir}/main.log
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
echo "## -" >> ${logdir}/main.log
echo "## - Linuxdistribution.........: $DISTRIBUTION" >> ${logdir}/main.log
@ -560,6 +629,11 @@ echo "" >> ${logdir}/main.log
echo "" >> ${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 "DISTRIBUTION=$DISTRIBUTION" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
@ -586,19 +660,31 @@ elif [ -f /etc/init.d/mysql ];then
_MYSQL_INITSCRIPT="mysql"
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}'`
if [ "X${PID}X" != "XX" ];then
echononl "Stoppe mysql Server.."
## - Stop MySQL Service if running
## -
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 "/etc/init.d/$_MYSQL_INITSCRIPT stop" >> ${logdir}/main.log
/etc/init.d/$_MYSQL_INITSCRIPT stop >> ${logdir}/main.log 2>&1
fi
sleep 5
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
else
echo_failed
@ -614,8 +700,30 @@ if ! $UPDATE_MYSQL ; then
echo_failed
fi
fi
else
echo_skipped
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
## -
@ -639,7 +747,7 @@ if ! $UPDATE_MYSQL ; then
echo_ok
else
echo_failed
fatal "Kann Mexistierendes Initskript nicht entfernen."
fatal "Kann existierendes Initskript nicht entfernen."
fi
fi
fi
@ -761,10 +869,37 @@ if ! $UPDATE_MYSQL ; then
# fi
echononl "Adding Group \"$MYSQL_GROUP\".."
if cat /etc/group | grep -e "^${MYSQL_GROUP}:" > /dev/null 2>&1 ; then
echo_skipped
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\".."
if cat /etc/group | grep -e "^${MYSQL_GROUP}:" > /dev/null 2>&1 ; then
echo_skipped
else
groupadd -r $MYSQL_GROUP > ${logdir}/groupadd.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
@ -772,12 +907,12 @@ if ! $UPDATE_MYSQL ; then
echo_failed
fatal Kann Gruppe \"${MYSQL_GROUP}\" nicht erstellen..
fi
fi
fi
echononl "Adding User \"$MYSQL_USER\".."
if id -u $MYSQL_USER > /dev/null 2>&1; then
echononl "Adding User \"$MYSQL_USER\".."
if id -u $MYSQL_USER > /dev/null 2>&1; then
echo_skipped
else
else
useradd -r -M -d /noexistent -s /bin/false -g $MYSQL_GROUP $MYSQL_USER > ${logdir}/useradd.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
@ -785,35 +920,9 @@ if ! $UPDATE_MYSQL ; then
echo_failed
fatal Kann User \"${MYSQL_USER}\" nicht erstellen..
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"
echo "" >> ${logdir}/main.log
echo "chown -R ${MYSQL_USER}:${MYSQL_GROUP} ${MYSQL_DATA_DIR}" >> ${logdir}/main.log
@ -999,6 +1108,98 @@ else
echo_skipped
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
@ -1018,7 +1219,8 @@ if $SYMLINK_INITSCRIPT ; then
echononl "Erstelle Symlink \"/etc/init.d/mysql.server\".."
echo "" >> ${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
echo_ok
else
@ -1034,99 +1236,11 @@ if $SYMLINK_INITSCRIPT ; then
echo_ok
else
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
## - 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 .."
if [ -f /etc/profile ]; then
@ -1178,26 +1292,30 @@ fi
echo
echononl "Richte MySQL Systemtabellen ein.."
cd $MYSQL_INSTALL_DIR
echo "" >> ${logdir}/main.log
echo "./bin/mysqld --initialize-insecure \ " >> ${logdir}/main.log
echo " --user=$MYSQL_USER \ " >> ${logdir}/main.log
echo " --basedir=$MYSQL_INSTALL_DIR \ " >> ${logdir}/main.log
echo " --datadir=$MYSQL_DATA_DIR \ " >> ${logdir}/main.log
echo " --language=$MYSQL_INSTALL_DIR/share/german" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
if ! $UPDATE_MYSQL ; then
cd $MYSQL_INSTALL_DIR
echo "" >> ${logdir}/main.log
echo "./bin/mysqld --initialize-insecure \ " >> ${logdir}/main.log
echo " --user=$MYSQL_USER \ " >> ${logdir}/main.log
echo " --basedir=$MYSQL_INSTALL_DIR \ " >> ${logdir}/main.log
echo " --datadir=$MYSQL_DATA_DIR \ " >> ${logdir}/main.log
echo " --language=$MYSQL_INSTALL_DIR/share/german" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
./bin/mysqld --initialize-insecure \
./bin/mysqld --initialize-insecure \
--user=$MYSQL_USER \
--basedir=$MYSQL_INSTALL_DIR \
--datadir=$MYSQL_DATA_DIR \
--lc-messages-dir=$MYSQL_INSTALL_DIR/share/german \
>> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
if [ "$?" = "0" ]; then
echo_ok
else
else
echo_failed
fatal Das Einrichten der MySQL Systemtabellen ist fehlgeschlagen..
fi
else
echo_skipped
fi
echononl "Create directory \"mysql-files\".."
@ -1251,8 +1369,8 @@ else
fi
echononl "Sichere Konfigurationsdatei.."
if [ -f ${MYSQL_INSTALL_DIR}/my.cnf ]; then
echononl "Sichere Konfigurationsdatei.."
echo "" >> ${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
@ -1262,22 +1380,44 @@ if [ -f ${MYSQL_INSTALL_DIR}/my.cnf ]; then
echo_failed
error Konnte Konfigurationsdatei ${MYSQL_INSTALL_DIR}/my.cnf nicht sichern..
fi
else
echo_skipped
fi
echononl "Erstelle Konfigurationsdatei ${MYSQL_INSTALL_DIR}/my.cnf.."
_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
echo "" >> ${logdir}/main.log
echo "_number_cpus=`grep "^processor" /proc/cpuinfo | sort -u | wc -l`" >> ${logdir}/main.log
_number_cpus=`grep "^processor" /proc/cpuinfo | sort -u | wc -l`
if ! $UPDATE_MYSQL || $_new_cnf_needed ; then
echononl "Erstelle Konfigurationsdatei ${MYSQL_INSTALL_DIR}/my.cnf.."
echo "" >> ${logdir}/main.log
echo "let MYSQL_THREAD_CONCURRENCY=$_number_cpus*2" >> ${logdir}/main.log
let MYSQL_THREAD_CONCURRENCY=$_number_cpus*2
echo "" >> ${logdir}/main.log
echo "_number_cpus=`grep "^processor" /proc/cpuinfo | sort -u | wc -l`" >> ${logdir}/main.log
_number_cpus=`grep "^processor" /proc/cpuinfo | sort -u | wc -l`
echo "" >> ${logdir}/main.log
echo "\$MYSQL_THREAD_CONCURRENCY = $MYSQL_THREAD_CONCURRENCY" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "let MYSQL_THREAD_CONCURRENCY=$_number_cpus*2" >> ${logdir}/main.log
let MYSQL_THREAD_CONCURRENCY=$_number_cpus*2
cat << EOF > ${MYSQL_INSTALL_DIR}/my.cnf
echo "" >> ${logdir}/main.log
echo "\$MYSQL_THREAD_CONCURRENCY = $MYSQL_THREAD_CONCURRENCY" >> ${logdir}/main.log
cat << EOF > ${MYSQL_INSTALL_DIR}/my.cnf
# Example MySQL config file for very large systems.
#
# This is for a large system with memory of 1G-2G where the system runs mainly
@ -2031,15 +2171,15 @@ ft_min_word_len = 3
interactive-timeout
EOF
if [ "$?" = "0" ]; then
if [ "$?" = "0" ]; then
echo_ok
else
else
echo_failed
error Konnte Konfigurationsdatei \"${MYSQL_INSTALL_DIR}/my.cnf\" nicht erstellen..
fi
fi
echononl "Kopiere \"stopwords_utf8_iso8859-15.txt\" -> ${MYSQL_INSTALL_DIR}.."
if [ -f "${MYSQL_SRC_BASE_DIR}/stopwords_utf8_iso8859-15.txt" ];then
echononl "Kopiere \"stopwords_utf8_iso8859-15.txt\" -> ${MYSQL_INSTALL_DIR}.."
if [ -f "${MYSQL_SRC_BASE_DIR}/stopwords_utf8_iso8859-15.txt" ];then
cp ${MYSQL_SRC_BASE_DIR}/stopwords_utf8_iso8859-15.txt ${MYSQL_INSTALL_DIR}
if [ "$?" = "0" ]; then
echo_ok
@ -2059,11 +2199,12 @@ if [ -f "${MYSQL_SRC_BASE_DIR}/stopwords_utf8_iso8859-15.txt" ];then
echo_failed
warn "Konnte stopwords_utf8_iso8859-15.txt nicht nach ${MYSQL_INSTALL_DIR} kopieren"
fi
else
else
echo_skipped
warn "Konnte ${MYSQL_SRC_BASE_DIR}/stopwords_utf8_iso8859-15.txt finden."
fi
fi
fi
#echononl "Kopiere Startscript nach /etc/init.d/mysql.server.."
#echo "" >> ${logdir}/main.log
@ -2101,8 +2242,6 @@ if ! $UPDATE_MYSQL ; then
if $SYSTEMD_EXISTS ; then
echo "systemctl enable mysql.server" >> ${logdir}/main.log
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
echo "update-rc.d mysql.server defaults" >> ${logdir}/main.log
update-rc.d mysql.server defaults >> ${logdir}/main.log 2>&1
@ -2117,28 +2256,43 @@ if ! $UPDATE_MYSQL ; then
error "Konnte MySQL Init Script Links (autom. boot) nicht erstellen.."
fi
fi
fi
echononl "Starte MySQL Datenbankserver.."
echononl "Run 'systemctl daemon-reload' to reload units."
if $SYSTEMD_EXISTS ; then
echo "" >> ${logdir}/main.log
if $SYSTEMD_EXISTS ; then
echo "systemctl start mysql.server" >> ${logdir}/main.log
systemctl start mysql.server >> ${logdir}/main.log 2>&1
else
echo "/etc/init.d/mysql.server start" >> ${logdir}/main.log
/etc/init.d/mysql.server start >> ${logdir}/main.log 2>&1
fi
echo "systemctl daemon-reload" >> ${logdir}/main.log
systemctl daemon-reload >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Konnte MySQL Datenbankserver nicht starten..
error "Run 'systemctl daemon-reload' failed!"
fi
else
echo_skipped
fi
echononl "Run \"mysql_upgrade -uroot\".."
echononl "Starte MySQL Datenbankserver.."
echo "" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql_upgrade -uroot" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql_upgrade -uroot >> ${logdir}/main.log 2>&1
if $SYSTEMD_EXISTS ; then
echo "systemctl start mysql.server" >> ${logdir}/main.log
systemctl start mysql.server >> ${logdir}/main.log 2>&1
else
echo "/etc/init.d/mysql.server start" >> ${logdir}/main.log
/etc/init.d/mysql.server start >> ${logdir}/main.log 2>&1
fi
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Konnte MySQL Datenbankserver nicht starten..
fi
echononl "Run \"mysql_upgrade -uroot\" - this may take some (long) time.."
echo "" >> ${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 -p$MYSQL_ROOT_PW >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
@ -2146,90 +2300,119 @@ else
error "Script \"mysql_upgrade -uroot\" failed!"
fi
echo "" >> ${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
if ! $UPDATE_MYSQL ; then
echononl "Setze root Passwort für den MySQL Zugang"
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
${MYSQL_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e "UPDATE user set authentication_string = password('$MYSQL_ROOT_PW')" \
## - Delete rows with empty 'User' from table mysql.user
## -
echo "" >> ${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
## - Set root password
## -
echononl "Setze root Passwort für den MySQL Zugang"
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
${MYSQL_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e "UPDATE user set authentication_string = password('$MYSQL_ROOT_PW')" \
>> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
if [ "$?" = "0" ]; then
echo_ok
else
else
echo_failed
error Konnte MySQL root Zugang fü den MySQL Server nicht setzen..
fi
fi
echononl "Neu Einlesen der Berechtigung (MySQL Server).."
echo "" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e \"FLUSH PRIVILEGES\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e "FLUSH PRIVILEGES" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
## - Flush privileges
## -
echononl "Neu Einlesen der Berechtigung (MySQL Server).."
echo "" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e \"FLUSH PRIVILEGES\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e "FLUSH PRIVILEGES" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
else
echo_failed
error Das Laden/Erneuern der Berechtigungen für die MySQL Datenbank ist fehlgeschlagen..
fi
fi
echo
echononl "Erstelle Passwort für maintance (MySQL) User.."
echo "" >> ${logdir}/main.log
PW_GEN=`which pwgen`
if [ -z "$PW_GEN" ]; then
_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
echononl "Erstelle Passwort für maintance (MySQL) User.."
echo "" >> ${logdir}/main.log
PW_GEN=`which pwgen`
if [ -z "$PW_GEN" ]; then
echo "_maint_passwd=\`cat /dev/urandom|tr -dc \"a-zA-Z0-9-_\$\?\" | fold -w16 | head -n 1\`" >> ${logdir}/main.log
_maint_passwd=`cat /dev/urandom|tr -dc "a-zA-Z0-9-_\$\?" | fold -w16 | head -n 1` >> ${logdir}/main.log 2>&1
else
else
echo "_maint_passwd=\`$PW_GEN -v -B 16 1\`" >> ${logdir}/main.log
_maint_passwd=`$PW_GEN -v -B 16 1` >> ${logdir}/main.log 2>&1
fi
if [ "$?" = "0" ]; then
fi
if [ "$?" = "0" ]; then
echo_ok
else
else
echo_failed
error Konnte Passwort für maintance \(MySQL\) User nicht erstellen..
fi
fi
_maint_user=sys-maint
echononl "Erstelle maintance MySQL User \"${_maint_user}\" - localhost.."
echo "" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -uroot -p$MYSQL_ROOT_PW mysql -N -s -e \"GRANT ALL ON *.* TO '${_maint_user}'@'localhost' IDENTIFIED BY '$_maint_passwd'\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -uroot -p$MYSQL_ROOT_PW mysql -N -s -e "GRANT ALL ON *.* TO '${_maint_user}'@'localhost' IDENTIFIED BY '$_maint_passwd'" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
_maint_user=sys-maint
echononl "Erstelle maintance MySQL User \"${_maint_user}\" - localhost.."
echo "" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -uroot -p$MYSQL_ROOT_PW mysql -N -s -e \"GRANT ALL ON *.* TO '${_maint_user}'@'localhost' IDENTIFIED BY '$_maint_passwd'\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -uroot -p$MYSQL_ROOT_PW mysql -N -s -e "GRANT ALL ON *.* TO '${_maint_user}'@'localhost' IDENTIFIED BY '$_maint_passwd'" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
else
echo_failed
error Konnte \(MySQL\) User \"${_maint_user}\" nicht erstellen..
fi
fi
echononl "Give \"Grant\" permission to MySQL User \"${_maint_user}\".."
echo "" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -uroot -p$MYSQL_ROOT_PW mysql -N -s -e \"UPDATE user SET Grant_priv = 'y' WHERE user = '${_maint_user}';\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -uroot -p$MYSQL_ROOT_PW mysql -N -s -e "UPDATE user SET Grant_priv = 'y' WHERE user = '${_maint_user}';" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echononl "Give \"Grant\" permission to MySQL User \"${_maint_user}\".."
echo "" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -uroot -p$MYSQL_ROOT_PW mysql -N -s -e \"UPDATE user SET Grant_priv = 'y' WHERE user = '${_maint_user}';\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -uroot -p$MYSQL_ROOT_PW mysql -N -s -e "UPDATE user SET Grant_priv = 'y' WHERE user = '${_maint_user}';" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
else
echo_failed
error Giving \"Grant\"-permission to \(MySQL\) User \"${_maint_user}\" failed
fi
fi
echononl "Neu Einlesen der Berechtigung (MySQL Server).."
echo "" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -uroot -p$MYSQL_ROOT_PW mysql -N -s -e \"FLUSH PRIVILEGES\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -uroot -p$MYSQL_ROOT_PW mysql -N -s -e "FLUSH PRIVILEGES" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echononl "Neu Einlesen der Berechtigung (MySQL Server).."
echo "" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -uroot -p$MYSQL_ROOT_PW mysql -N -s -e \"FLUSH PRIVILEGES\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -uroot -p$MYSQL_ROOT_PW mysql -N -s -e "FLUSH PRIVILEGES" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
else
echo_failed
error Das Laden/Erneuern der Berechtigungen für die MySQL Datenbank ist fehlgeschlagen..
fi
fi
_maint_conf_file=${MYSQL_INSTALL_DIR}/sys-maint.cnf
echononl "Erstelle ${_maint_conf_file}.."
cat << EOF > ${MYSQL_INSTALL_DIR}/sys-maint.cnf
_maint_conf_file=${MYSQL_INSTALL_DIR}/sys-maint.cnf
echononl "Erstelle ${_maint_conf_file}.."
cat << EOF > ${MYSQL_INSTALL_DIR}/sys-maint.cnf
[client]
host = localhost
user = $_maint_user
@ -2242,11 +2425,12 @@ password = $_maint_passwd
socket = $MYSQL_UNIX_SOCKET
basedir = /usr
EOF
if [ "$?" = "0" ]; then
if [ "$?" = "0" ]; then
echo_ok
else
else
echo_failed
error Konnte Konfigurationsdatei \"${MYSQL_INSTALL_DIR}/sys-maint.cnf\" nicht erstellen..
fi
fi
@ -2282,4 +2466,4 @@ fi
echo
exit
exit 0