mysql/install_mysql-5.5.sh
2017-02-19 12:27:15 +01:00

2096 lines
63 KiB
Bash
Executable File

#!/usr/bin/env bash
_MYSQL_VERSION=5.5.47
_MYSQL_SRC_BASE_DIR=/usr/local/src/mysql
_MYSQL_LOG_DIR=/var/log/mysql
_MYSQL_PORT=3306
_MYSQL_UNIX_SOCKET=/tmp/mysql.sock
_MYSQL_USER=mysql
_MYSQL_GROUP=mysql
_DISTRIBUTION=Debian
## - Let make use multiple cores (-j<number of cores +1>)
## -
export MAKEFLAGS=-j$(expr `grep "^processor" /proc/cpuinfo | sort -u | wc -l` + 1)
## --- Some functions
## ---
echononl(){
echo X\\c > /tmp/shprompt$$
if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then
echo "$*\\c" 1>&2
else
echo -e -n "$*" 1>&2
fi
rm /tmp/shprompt$$
}
fatal(){
echo ""
echo -e "Fehler: $*"
echo ""
echo -e "\t\033[31m\033[1mInstalllation wird abgebrochen\033[m\033[m"
echo ""
exit 1
}
warn (){
echo ""
echo -e "\t[ \033[33m\033[1mWarning\033[m ]: $*"
echo ""
}
echo_ok() {
echo -e "\033[75G[ \033[32mok\033[m ]"
## echo -e " [ ok ]"
}
echo_failed(){
echo -e "\033[75G[ \033[1;31mfailed\033[m ]"
## echo -e " [ failed ]"
}
echo_skipped() {
echo -e "\033[75G[ \033[33m\033[1mskipped\033[m ]"
}
## ---
## --- END: functions
_curdir=`pwd`
clear
echo -e "\033[21G\033[32mInstallationsscript für die Mysql Datenbank \033[m"
echo
## - root user?
## -
if [ "$(id -u)" != "0" ]; then
fatal Skript muss als \"root\" ausgeführt werden
fi
DISTRIBUTION=
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Um welche Linux Distribution handelt es sich?"
echo ""
echo "[1] Debian"
echo "[2] andere"
echo ""
echononl "Eingabe: "
while [ "$DISTRIBUTION" != "Debian" -a "$DISTRIBUTION" != "other" ];do
read OPTION
case $OPTION in
1) DISTRIBUTION="Debian"
;;
2) DISTRIBUTION="other"
;;
*) echo ""
echo -e "\tFalsche Eingabe ! [ 1 = Debian ; 2 = andere ]"
echo ""
echononl "Eingabe:"
;;
esac
done
_UPDATE_MYSQL=""
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Soll eine vorhanden MySQL Installation geupdateted werden?"
echo ""
echo "[1] Neuinstallation"
echo "[2] Update vorhandener Installation"
echo ""
echononl "Eingabe: "
while [ "$_UPDATE_MYSQL" != "update" -a "$_UPDATE_MYSQL" != "new" ];do
read OPTION
case $OPTION in
1) _UPDATE_MYSQL="new"
;;
2) _UPDATE_MYSQL="update"
;;
*) echo ""
echo -e "\tFalsche Eingabe ! [ 1 = Neuinstallation ; 2 = Update ]"
echo ""
echononl "Eingabe:"
;;
esac
done
if [ "$_UPDATE_MYSQL" = "update" ];then
UPDATE_MYSQL=true
else
UPDATE_MYSQL=false
fi
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 ""
MYSQL_VERSION=
while [ "X$MYSQL_VERSION" = "X" ]
do
echononl "MySQL Version [$_MYSQL_VERSION]: "
read MYSQL_VERSION
if [ "X$MYSQL_VERSION" = "X" ]; then
MYSQL_VERSION=$_MYSQL_VERSION
fi
_MYSQL_INSTALL_DIR=/usr/local/mysql-$MYSQL_VERSION
_MYSQL_DATA_DIR=/data/mysql-$MYSQL_VERSION
distfile=mysql-${MYSQL_VERSION}.tar.gz
done
MYSQL_MAJOR_VERSION=`echo $MYSQL_VERSION | cut -d '.' -f1,2`
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Gib den Namen des MySQL Sourceverzeichnisses an."
echo ""
MYSQL_SRC_BASE_DIR=
while [ "X$MYSQL_SRC_BASE_DIR" = "X" ]
do
echononl "MySQL Sourceverzeichnis [${_MYSQL_SRC_BASE_DIR}]: "
read MYSQL_SRC_BASE_DIR
if [ "X$MYSQL_SRC_BASE_DIR" = "X" ]; then
MYSQL_SRC_BASE_DIR=$_MYSQL_SRC_BASE_DIR
fi
done
MYSQL_SRC_DIR=${MYSQL_SRC_BASE_DIR}/mysql-$MYSQL_VERSION
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Gib den Namen des Verzeichnisses in das MySQL installiert werden soll an."
echo ""
MYSQL_INSTALL_DIR=
while [ "X$MYSQL_INSTALL_DIR" = "X" ]
do
echononl "MySQL Installationsverzeichnis [${_MYSQL_INSTALL_DIR}]: "
read MYSQL_INSTALL_DIR
if [ "X$MYSQL_INSTALL_DIR" = "X" ]; then
MYSQL_INSTALL_DIR=$_MYSQL_INSTALL_DIR
LINK=yes
fi
logdir=${MYSQL_SRC_BASE_DIR}/log-$MYSQL_VERSION
done
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Gib den Namen des Verzeichnisses für die MySQL-Datenbanken an."
echo ""
MYSQL_DATA_DIR=
while [ "X$MYSQL_DATA_DIR" = "X" ]
do
echononl "MySQL Datenbankverzeichnis [$_MYSQL_DATA_DIR]: "
read MYSQL_DATA_DIR
if [ "X$MYSQL_DATA_DIR" = "X" ]; then
MYSQL_DATA_DIR=$_MYSQL_DATA_DIR
fi
done
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Gib den Namen des LOG-Verzeichnisses für die MySQL an. !! NICHT für binäre logfiles !!"
echo ""
MYSQL_LOG_DIR=
while [ "X$MYSQL_LOG_DIR" = "X" ]
do
echononl "MySQL LOG Verzeichniss [$_MYSQL_LOG_DIR]: "
read MYSQL_LOG_DIR
if [ "X$MYSQL_LOG_DIR" = "X" ]; then
MYSQL_LOG_DIR=$_MYSQL_LOG_DIR
fi
done
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Gib den TCP Port für MySQL an (voreingestell \"${MYSQL_PORT}\")."
echo ""
MYSQL_PORT=
while [ "X$MYSQL_PORT" = "X" ]
do
echononl "MySQL TCP Port [$_MYSQL_PORT]: "
read MYSQL_PORT
if [ "X$MYSQL_PORT" = "X" ]; then
MYSQL_PORT=$_MYSQL_PORT
fi
done
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Gib den Unix Socket für MySQL an (voreingestell \"${_MYSQL_UNIX_SOCKET}\")."
echo ""
MYSQL_UNIX_SOCKET=
while [ "X$MYSQL_UNIX_SOCKET" = "X" ]
do
echononl "MySQL UNIX Socket [$_MYSQL_UNIX_SOCKET]: "
read MYSQL_UNIX_SOCKET
if [ "X$MYSQL_UNIX_SOCKET" = "X" ]; then
MYSQL_UNIX_SOCKET=$_MYSQL_UNIX_SOCKET
fi
done
echo ""
echo "--"
echo ""
echo "Gib den User-Namen und die User-Gruppe unter dem der MySQL-Daemon laufen soll an."
echo ""
MYSQL_USER=
while [ "X$MYSQL_USER" = "X" ]
do
echononl "MySQL-User [${_MYSQL_USER}]: "
read MYSQL_USER
if [ "X$MYSQL_USER" = "X" ]; then
MYSQL_USER=$_MYSQL_USER
fi
done
MYSQL_GROUP=
while [ "X$MYSQL_GROUP" = "X" ]
do
echononl "MySQL-Gruppe [$MYSQL_USER]: "
read MYSQL_GROUP
if [ "X$MYSQL_GROUP" = "X" ]; then
MYSQL_GROUP=$MYSQL_USER
fi
done
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.."
echo ""
_MYSQL_ROOT_PW_1="X"
_MYSQL_ROOT_PW_2="Y"
while [ "$_MYSQL_ROOT_PW_1" != "$_MYSQL_ROOT_PW_2" ]
do
echononl "Passworteingabe: "
read -s _MYSQL_ROOT_PW_1
echo
if [ "X$_MYSQL_ROOT_PW_1" = "X" ]; then
echo -e "\n\t\033[33m\033[1mPassworteingabe erforderlich!\033[m\n"
continue
fi
echononl "Passwortwiederholung: "
read -s _MYSQL_ROOT_PW_2
echo
if [ "X$_MYSQL_ROOT_PW_2" = "X" ]; then
echo -e "\n\t\033[33m\033[1mPasswortwiederholung erforderlich!\033[m\n"
continue
fi
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
MYSQL_ROOT_PW=$_MYSQL_ROOT_PW_1
fi
done
if $UPDATE_MYSQL ; then
__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 ""
echo -e "\033[32m--\033[m"
echo ""
echo "Symlinks:"
echo ""
echo " - Setze Symlink für das Init Skript (/etc/init.d/mysql.server)"
echo " - Setze Sysmlink for das Installationsverzeichnis `dirname $MYSQL_INSTALL_DIR`/mysql"
echo " - Setze Sysmlink for das Datenverzeichnis `dirname $MYSQL_DATA_DIR`/mysql"
echo ""
_SYMLINK_INITSCRIPT=""
echononl "Sysmlink für das Init Skript? (ja/nein) [${__SYMLINK_INITSCRIPT}]: "
read _SYMLINK_INITSCRIPT
if [ "X$_SYMLINK_INITSCRIPT" = "X" ];then
_SYMLINK_INITSCRIPT=$__SYMLINK_INITSCRIPT
fi
while [ "$_SYMLINK_INITSCRIPT" != "ja" \
-a "$_SYMLINK_INITSCRIPT" != "Ja" \
-a "$_SYMLINK_INITSCRIPT" != "nein" \
-a "$_SYMLINK_INITSCRIPT" != "Nein" ]; do
echononl "Falsche Eingabe. (ja/nein): "
read _SYMLINK_INITSCRIPT
done
if [ "$_SYMLINK_INITSCRIPT" = "ja" -o "$_SYMLINK_INITSCRIPT" = "Ja" ]; then
SYMLINK_INITSCRIPT=true
else
SYMLINK_INITSCRIPT=false
fi
echo ""
_SYMLINK_INSTALL_DIR=""
echononl "Sysmlink für das Installationsverzeichnis? (ja/nein) [${__SYMLINK_INSTALL_DIR}]: "
read _SYMLINK_INSTALL_DIR
if [ "X$_SYMLINK_INSTALL_DIR" = "X" ];then
_SYMLINK_INSTALL_DIR=$__SYMLINK_INSTALL_DIR
fi
while [ "$_SYMLINK_INSTALL_DIR" != "ja" \
-a "$_SYMLINK_INSTALL_DIR" != "Ja" \
-a "$_SYMLINK_INSTALL_DIR" != "nein" \
-a "$_SYMLINK_INSTALL_DIR" != "Nein" ]; do
echononl "Falsche Eingabe. (ja/nein): "
read _SYMLINK_INSTALL_DIR
done
if [ "$_SYMLINK_INSTALL_DIR" = "ja" -o "$_SYMLINK_INSTALL_DIR" = "Ja" ]; then
SYMLINK_INSTALL_DIR=true
else
SYMLINK_INSTALL_DIR=false
fi
echo ""
_SYMLINK_DATA_DIR=""
echononl "Sysmlink für das Datenverzeichnis? (ja/nein) [${__SYMLINK_DATA_DIR}]: "
read _SYMLINK_DATA_DIR
if [ "X$_SYMLINK_DATA_DIR" = "X" ];then
_SYMLINK_DATA_DIR=$__SYMLINK_DATA_DIR
fi
while [ "$_SYMLINK_DATA_DIR" != "ja" \
-a "$_SYMLINK_DATA_DIR" != "Ja" \
-a "$_SYMLINK_DATA_DIR" != "nein" \
-a "$_SYMLINK_DATA_DIR" != "Nein" ]; do
echononl "Falsche Eingabe. (ja/nein): "
read _SYMLINK_DATA_DIR
done
if [ "$_SYMLINK_DATA_DIR" = "ja" -o "$_SYMLINK_DATA_DIR" = "Ja" ]; then
SYMLINK_DATA_DIR=true
else
SYMLINK_DATA_DIR=false
fi
echo ""
echo ""
clear
echo -e "\033[21G\033[32mStarte Installation mit folgenden Parametern:\033[m"
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) --"
fi
echo ""
echo "Linuxdistribution.........: $DISTRIBUTION"
echo "MySQL Versionsnummer......: $MYSQL_VERSION"
echo "Sourcecodeverzeicnis......: $MYSQL_SRC_BASE_DIR"
echo "Installationsverzeichnis..: $MYSQL_INSTALL_DIR"
echo "Datenbankverzeichnis......: $MYSQL_DATA_DIR"
echo "Log Verzeichnis...........: $MYSQL_LOG_DIR"
echo "TCP Port..................: $MYSQL_PORT"
echo "Unix Socket...............: $MYSQL_UNIX_SOCKET"
echo "MySQL-User................: $MYSQL_USER"
echo "MySQL-Gruppe..............: $MYSQL_GROUP"
echo ""
echo "Symlink Initskript........: $SYMLINK_INITSCRIPT"
echo "Symlink Installationsverz.: $SYMLINK_INSTALL_DIR"
echo "Symlink Datenverzeichnis..: $SYMLINK_DATA_DIR"
echo ""
echo ""
echononl "einverstanden [ja/nein]: "
read OK
while [ "X$OK" != "Xja" -a "X$OK" != "XJa" -a "X$OK" != "Xnein" -a "X$OK" != "XNein" ]
do
echononl "falsche Angabe! [ja/nein]: "
read OK
done
[ $OK = "ja" -o $OK = "Ja" ] || fatal wiederhole Installation zur Eingabe anderer Parameter
## - Sorcecode Verzeichnis vorhanden?
## -
if [ ! -d ${MYSQL_SRC_BASE_DIR} ] ; then
fatal "Kann MySQL Sourcecode Verzeichnis \"${MYSQL_SRC_BASE_DIR}\" nicht finden."
fi
## - Sorcecode vorhanden?
## -
if [ ! -f ${MYSQL_SRC_BASE_DIR}/$distfile ] ; then
echo ""
echononl "Download $distfile ..."
#wget -O ${MYSQL_SRC_BASE_DIR}/$distfile http://sourceforge.net/projects/mysql.mirror/files/MySQL%20${MYSQL_VERSION}/mysql-${MYSQL_VERSION}.tar.gz/download 2> /dev/null
wget -O ${MYSQL_SRC_BASE_DIR}/$distfile https://dev.mysql.com/get/Downloads/MySQL-${MYSQL_MAJOR_VERSION}/$distfile 2>/dev/null
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Downloading $distfile von http://sourceforge.net/projects/mysql.mirror/files Fehlgeschlagen."
fi
#fatal "Kann MySQL Sourcecode \"${MYSQL_SRC_BASE_DIR}/$distfile\" nicht finden.\n\nDownload von http://sourceforge.net/projects/mysql.mirror/files"
fi
echo ""
## - Erstelle Logverzeichnis
## -
if [ -d $logdir ]; then
echononl "Verschiebe exitierendes Logverzeichnis ..."
mv $logdir $logdir.`date +"%Y%m%d-%H%M"`
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Logverzeichnis \"${logdir}\" nicht verschieben..
fi
fi
echononl "Erstelle Logverzeichnis \"${logdir}\".."
mkdir -p $logdir > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Logverzeichnis \"${logdir}\" nicht erstellen..
fi
touch ${logdir}/main.log
echo -e "## - Starte Installation mit folgenden Parametern:" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
if ! $UPDATE_MYSQL ; then
echo "## - Neusistallation" >> ${logdir}/main.log
else
echo "## - Update (Erstzen einer vorhandenen Installation)" >> ${logdir}/main.log
fi
echo "## -" >> ${logdir}/main.log
echo "## - Linuxdistribution.........: $DISTRIBUTION" >> ${logdir}/main.log
echo "## - MySQL Versionsnummer......: $MYSQL_VERSION" >> ${logdir}/main.log
echo "## - Sourcecodeverzeicnis......: $MYSQL_SRC_BASE_DIR" >> ${logdir}/main.log
echo "## - Installationsverzeichnis..: $MYSQL_INSTALL_DIR" >> ${logdir}/main.log
echo "## - Datenbankverzeichnis......: $MYSQL_DATA_DIR" >> ${logdir}/main.log
echo "## - Log Verzeichnis...........: $MYSQL_LOG_DIR" >> ${logdir}/main.log
echo "## - TCP Port..................: $MYSQL_PORT" >> ${logdir}/main.log
echo "## - Unix Socket...............: $MYSQL_UNIX_SOCKET" >> ${logdir}/main.log
echo "## - MySQL-User................: $MYSQL_USER" >> ${logdir}/main.log
echo "## - MySQL-Gruppe..............: $MYSQL_GROUP" >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "## - Symlink Initskript........: $SYMLINK_INITSCRIPT" >> ${logdir}/main.log
echo "## - Symlink Installationsverz.: $SYMLINK_INSTALL_DIR" >> ${logdir}/main.log
echo "## - Symlink Datenverzeichnis..: $SYMLINK_DATA_DIR" >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "UPDATE_MYSQL=$UPDATE_MYSQL" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "DISTRIBUTION=$DISTRIBUTION" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "MYSQL_VERSION=$MYSQL_VERSION" >> ${logdir}/main.log
echo "MYSQL_SRC_BASE_DIR=$MYSQL_SRC_BASE_DIR" >> ${logdir}/main.log
echo "MYSQL_INSTALL_DIR=$MYSQL_INSTALL_DIR" >> ${logdir}/main.log
echo "MYSQL_DATA_DIR=$MYSQL_DATA_DIR" >> ${logdir}/main.log
echo "MYSQL_LOG_DIR=$MYSQL_LOG_DIR" >> ${logdir}/main.log
echo "MYSQL_PORT=$MYSQL_PORT" >> ${logdir}/main.log
echo "MYSQL_UNIX_SOCKET=$MYSQL_UNIX_SOCKET" >> ${logdir}/main.log
echo "MYSQL_USER=$MYSQL_USER" >> ${logdir}/main.log
echo "MYSQL_GROUP=$MYSQL_GROUP" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "SYMLINK_INITSCRIPT=$SYMLINK_INITSCRIPT" >> ${logdir}/main.log
echo "SYMLINK_INSTALL_DIR=$SYMLINK_INSTALL_DIR" >> ${logdir}/main.log
echo "SYMLINK_DATA_DIR=$SYMLINK_DATA_DIR" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
_MYSQL_INITSCRIPT=
if [ -f /etc/init.d/mysql.server ];then
_MYSQL_INITSCRIPT="mysql.server"
elif [ -f /etc/init.d/mysql ];then
_MYSQL_INITSCRIPT="mysql"
fi
if ! $UPDATE_MYSQL ; then
if [ "X${_MYSQL_INITSCRIPT}X" != "XX" ];then
PID=`ps aux | grep "mysqld_safe" | grep -v grep | awk '{print$2}'`
if [ "X${PID}X" != "XX" ];then
echononl "Stoppe mysql Server.."
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
sleep 5
PID=`ps aux | grep "mysqld_safe" | grep -v grep | awk '{print$2}'`
if [ "X${PID}X" = "XX" ]; then
echo_ok
else
echo_failed
PID=`ps aux | grep "mysqld" | grep -v grep | awk '{print$2}'`
echononl "Abbruch (kill -9) aller mysqld Prozesse.."
echo "" >> ${logdir}/main.log
echo "kill -9 $PID" >> ${logdir}/main.log 2>&1
kill -9 $PID
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
fi
fi
## - Entferne symbolische Links aus den Run Level Verzeichnissen
## -
echononl "Entferne symbolische Links aus den Run Level Verzeichnissen"
echo "" >> ${logdir}/main.log
echo "update-rc.d -f $_MYSQL_INITSCRIPT remove" >> ${logdir}/main.log
update-rc.d -f $_MYSQL_INITSCRIPT remove >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann symbolische Links (Run Level Verzeichnisse) nicht entfernen."
fi
if [ -f "/etc/init.d/$_MYSQL_INITSCRIPT" ]; then
echononl "Entferne existierendes Initskript"
echo "" >> ${logdir}/main.log
echo "rm -f /etc/init.d/$_MYSQL_INITSCRIPT" >> ${logdir}/main.log
rm -f /etc/init.d/$_MYSQL_INITSCRIPT >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Mexistierendes Initskript nicht entfernen."
fi
fi
fi
## - Uninstall debian mysql packages if installed
## -
if [ "$DISTRIBUTION" = "Debian" ]; then
echononl "Deinstalliere Debian MySQL Pakete.."
_INSTALLED_MYSQL_DEB=`dpkg -l | grep mysql | grep -e "^i" | awk '{print$2}'`
INSTALLED_MYSQL_DEB=
for deb in $_INSTALLED_MYSQL_DEB ; do
INSTALLED_MYSQL_DEB="$INSTALLED_MYSQL_DEB $deb"
done
if [ -n "$INSTALLED_MYSQL_DEB" ]; then
echo "" >> ${logdir}/main.log
echo "apt-get remove --purge -q -y $INSTALLED_MYSQL_DEB" >> ${logdir}/main.log
apt-get remove --purge -q -y $INSTALLED_MYSQL_DEB >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann MySQL Packete nicht deinstalieren..
fi
else
echo_skipped
fi
fi
## - Install cmake if not exists
##
echononl "Installing \"cmake\".."
_cmake=`which cmake`
if [ "X$_cmake" = "X" ]; then
apt-get install -q -y cmake > ${logdir}/apt-install.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann \"cmake\" nicht installieren..
fi
else
echo_skipped
fi
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
else
echo_failed
fatal Kann Gruppe \"${MYSQL_GROUP}\" nicht erstellen..
fi
fi
echononl "Adding User \"$MYSQL_USER\".."
if id -u $MYSQL_USER > /dev/null 2>&1; then
echo_skipped
else
useradd -r -M -d /noexistent -s /bin/false -g $MYSQL_GROUP $MYSQL_USER > ${logdir}/useradd.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann User \"${MYSQL_USER}\" nicht erstellen..
fi
fi
fi
if [ -d $MYSQL_DATA_DIR ]; then
echononl "Verschiebe exitierendes MySQL Datenverzeichnis ..."
echo "" >> ${logdir}/main.log
echo "mv $MYSQL_DATA_DIR ${MYSQL_SRC_BASE_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 Sourceverzeichnis \"${MYSQL_SRC_BASE_DIR}/mysql-$MYSQL_VERSION\" nicht verschieben..
fi
fi
echononl "Erstelle Datenbankverzeichnis \"$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 Datenbankverzeichnis \"${MYSQL_DATA_DIR}\" nicht erstellen..
fi
echononl "Setze Besitzer \"${MYSQL_USER}:${MYSQL_GROUP}\" für Datenbankverzeichnis"
echo "" >> ${logdir}/main.log
echo "chown -R ${MYSQL_USER}:${MYSQL_GROUP} ${MYSQL_DATA_DIR}" >> ${logdir}/main.log
chown -R ${MYSQL_USER}:${MYSQL_GROUP} ${MYSQL_DATA_DIR} >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Besitzer für Datenbankverzeichnis \"${MYSQL_DATA_DIR}\" nicht ändern..
fi
echononl "Setze Verzeichnisrechte \"700\" für Datenbankverzeichnis"
echo "" >> ${logdir}/main.log
echo "chmod 700 ${MYSQL_DATA_DIR}" >> ${logdir}/main.log
chmod 700 ${MYSQL_DATA_DIR} >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Verzeichnisrechte für Datenbankverzeichnis \"${MYSQL_DATA_DIR}\" nicht ändern..
fi
echononl "Erstelle LOG Verzeichnis \"$MYSQL_LOG_DIR\".."
echo "" >> ${logdir}/main.log
echo "mkdir -p $MYSQL_LOG_DIR" >> ${logdir}/main.log
mkdir -p $MYSQL_LOG_DIR >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
_mysql_log=${MYSQL_LOG_DIR}/mysql.log
_mysql_error_log=${MYSQL_LOG_DIR}/mysql.err
_mysql_slow_query_log=${MYSQL_LOG_DIR}/slow_query.log
else
echo_failed
fatal Kann LOG Verzeichnis \"${MYSQL_LOG_DIR}\" nicht erstellen..
fi
echononl "Setze Besitzer \"${MYSQL_USER}:${MYSQL_GROUP}\" für LOG Verzeichnis"
echo "" >> ${logdir}/main.log
echo "chown -R ${MYSQL_USER}:${MYSQL_GROUP} ${MYSQL_LOG_DIR}" >> ${logdir}/main.log
chown -R ${MYSQL_USER}:${MYSQL_GROUP} ${MYSQL_LOG_DIR} >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Besitzer für LOG Verzeichnis \"${MYSQL_LOG_DIR}\" nicht ändern..
fi
echononl "Setze Verzeichnisrechte \"2750\" für LOG Verzeichnis"
echo "" >> ${logdir}/main.log
echo "chmod 2750 ${MYSQL_LOG_DIR}" >> ${logdir}/main.log
chmod 2750 ${MYSQL_LOG_DIR} >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Verzeichnisrechte für LOG Verzeichnis \"${MYSQL_LOG_DIR}\" nicht ändern..
fi
#if [ -d "${MYSQL_SRC_BASE_DIR}/mysql-$MYSQL_VERSION" ];then
# echononl "Verschiebe exitierendes Sourceverzeichnis ..."
# echo "" >> ${logdir}/main.log
# echo "mv ${MYSQL_SRC_BASE_DIR}/mysql-$MYSQL_VERSION ${MYSQL_SRC_BASE_DIR}/mysql-$MYSQL_VERSION.`date +\"%Y%m%d-%H%M\"`" >> ${logdir}/main.log
# mv ${MYSQL_SRC_BASE_DIR}/mysql-$MYSQL_VERSION ${MYSQL_SRC_BASE_DIR}/mysql-$MYSQL_VERSION.`date +"%Y%m%d-%H%M"` \
# >> ${logdir}/main.log 2>&1
# if [ "$?" = "0" ]; then
# echo_ok
# else
# echo_failed
# fatal Kann Sourceverzeichnis \"${MYSQL_SRC_BASE_DIR}/mysql-$MYSQL_VERSION\" nicht verschieben..
# fi
#fi
if [ -d "${MYSQL_SRC_DIR}" ];then
echononl "Verschiebe exitierendes Sourceverzeichnis ..."
echo "" >> ${logdir}/main.log
echo "mv ${MYSQL_SRC_DIR} ${MYSQL_SRC_DIR}.`date +\"%Y%m%d-%H%M\"`" >> ${logdir}/main.log
mv ${MYSQL_SRC_DIR} ${MYSQL_SRC_DIR}.`date +"%Y%m%d-%H%M"` >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Sourceverzeichnis \"${MYSQL_SRC_DIR}\" nicht verschieben..
fi
fi
cd $MYSQL_SRC_BASE_DIR
echo "" >> ${logdir}/main.log
echo "cd $MYSQL_SRC_BASE_DIR" >> ${logdir}/main.log
echo
echononl "Entpacke $distfile ..."
echo "" >> ${logdir}/main.log
echo "gunzip < $distfile | tar -xf -" >> ${logdir}/main.log
gunzip < $distfile | tar -xf -
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann MySQL Sourcearchiv \"${distfile}\" nicht entpacken..
fi
cd ${MYSQL_SRC_DIR}
echo "" >> ${logdir}/main.log
echo "cd ${MYSQL_SRC_DIR}" >> ${logdir}/main.log
echononl "Konfiguriere MySQL (cmake).."
echo "" >> ${logdir}/main.log
echo "cmake -D CMAKE_INSTALL_PREFIX=$MYSQL_INSTALL_DIR -D MYSQL_DATADIR=$MYSQL_DATA_DIR ." >> ${logdir}/main.log
cmake -D CMAKE_INSTALL_PREFIX=$MYSQL_INSTALL_DIR -D MYSQL_DATADIR=$MYSQL_DATA_DIR . > ${logdir}/cmake-conf.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Konfiguration fehlgeschlagen. Siehe ${logdir}/cmake-conf.log ..
fi
echononl "Kompiliere MySQL.."
echo "" >> ${logdir}/main.log
echo "make" >> ${logdir}/main.log
make > ${logdir}/make.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kompilieren der MySQL Sourcen ist fehlgeschlagen. Siehe ${logdir}/make.log ..
fi
if [ -d ${MYSQL_INSTALL_DIR} ];then
echononl "Verschiebe exitierendes Installationsverzeichnis ..."
echo "" >> ${logdir}/main.log
echo "mv $MYSQL_INSTALL_DIR $MYSQL_INSTALL_DIR.`date +\"%Y%m%d-%H%M\"`" >> ${logdir}/main.log
mv $MYSQL_INSTALL_DIR $MYSQL_INSTALL_DIR.`date +"%Y%m%d-%H%M"` >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Installationsverzeichnis \"${MYSQL_INSTALL_DIR}\" nicht verschieben..
fi
fi
echononl "Installiere MySQL.."
echo "" >> ${logdir}/main.log
echo "make install" >> ${logdir}/main.log
make install > ${logdir}/make_install.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Installieren von MySQL ist fehlgeschlagen. Siehe ${logdir}/make_install.log ..
fi
echononl "Konfiguriere Manpages.."
_done=false
if [ -f /etc/manpath.config ];then
if ! grep /usr/local/mysql/man /etc/manpath.config > /dev/null 2<&1 ; then
echo >> /etc/manpath.config
echo "MANDATORY_MANPATH /usr/local/mysql/man /var/cache/man" >> /etc/manpath.config
echo "MANPATH_MAP /usr/local/mysql/bin /usr/local/mysql/man" >> /etc/manpath.config
echo "MANDB_MAP /usr/local/mysql/man /var/cache/man" >> /etc/manpath.config
_done=true
fi
elif [ -f /etc/man.conf ];then
if ! grep /opt/apache2/man /etc/man.conf > /dev/null 2<&1 ; then
echo >> /etc/man.conf
echo "MANPATH /opt/mysql/man /var/cache/man" >> /etc/man.conf
echo "MANPATH_MAP /opt/mysql/bin /opt/apache2/man" >> /etc/man.conf
_done=true
fi
fi
if $_done ; then
echo_ok
else
echo_skipped
fi
if $SYMLINK_INITSCRIPT ; then
if [ -h "/etc/init.d/mysql.server" ]; then
echononl "Entferne vorhandenen Symlink \"/etc/init.d/mysql.server\".."
echo "" >> ${logdir}/main.log
echo "rm /etc/init.d/mysql.server" >> ${logdir}/main.log
rm /etc/init.d/mysql.server >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Symlink /etc/init.d/mysql.server nicht entfernen..
fi
fi
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
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Symlink $MYSQL_INSTALL_DIR/support-files/mysql.server --> /etc/init.d/mysql.server nicht erstellen.."
fi
echononl "Setze ulimit im Startscript.."
echo "" >> ${logdir}/main.log
echo "sed -i \"1 s/\(.*\)/\1\n\nulimit -n \\\`ulimit -Hn\\\`\n/\" /etc/init.d/mysql.server" >> ${logdir}/main.log
sed -i "1 s/\(.*\)/\1\n\nulimit -n \`ulimit -Hn\`\n/" /etc/init.d/mysql.server >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann \"ulimit\" im Startscript nicht setzen /etc/init.d/mysql.server nicht setzen.."
fi
fi
## - Symlink Installadionsverzeichnis (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
fatal 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
fatal 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
fatal 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
fatal 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
fatal 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
fatal 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
_mysql_bin_dir="`dirname $MYSQL_INSTALL_DIR`/mysql/bin"
if ! grep -e "PATH=.*$_mysql_bin_dir" /etc/profile > /dev/null 2<&1 ; then
echo "" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s#^([ ]*export[ ]*PATH.*$)#check_dir=\$_mysql_bin_dir\nif [ -d \\\"\\\\\\\$check_dir\\\" ];then\n PATH=\\\\\\\${check_dir}:\\\\\\\$PATH\nfi\n\n\1#\" /etc/profile" >> ${logdir}/main.log 2<&1
perl -i -n -p -e "s#^([ ]*export[ ]*PATH.*$)#check_dir=$_mysql_bin_dir\nif [ -d \"\\\$check_dir\" ];then\n PATH=\\\${check_dir}:\\\$PATH\nfi\n\n\1#" /etc/profile >> ${logdir}/main.log 2<&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
if ! echo "$PATH" | grep $_mysql_bin_dir >> ${logdir}/main.log 2>&1 ; then
export PATH=${_mysql_bin_dir}:$PATH
fi
else
echo_skipped
fi
else
echo_skipped
fi
echo
echononl "Erstelle Konfigurationsdatei /etc/ld.so.conf.d/mysql.conf.."
cat << EOF >/etc/ld.so.conf.d/mysql.conf
`dirname $MYSQL_INSTALL_DIR`/mysql/lib
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Datei /etc/ld.so.conf.d/mysql.conf für dynamischen Linker nicht erstellen ..
fi
echononl "Erstelle symbolische Links auf Libraries (ldconfig).."
echo "" >> ${logdir}/main.log
echo "ldconfig" >> ${logdir}/main.log
ldconfig >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Der Befehl \"ldconfig\" ist fehgeschlagen"
fi
echo
echononl "Richte MySQL Systemtabellen ein.."
cd $MYSQL_INSTALL_DIR
echo "" >> ${logdir}/main.log
echo "./scripts/mysql_install_db --no-defaults \ " >> ${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
./scripts/mysql_install_db --no-defaults \
--user=$MYSQL_USER \
--basedir=$MYSQL_INSTALL_DIR \
--datadir=$MYSQL_DATA_DIR \
--language=$MYSQL_INSTALL_DIR/share/german \
>> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Das Einrichten der MySQL Systemtabellen ist fehlgeschlagen..
fi
echononl "Setze Besitzer/Gruppe für das Datenbankverzeichnis.."
echo "" >> ${logdir}/main.log
echo "chown -R ${MYSQL_USER}:$MYSQL_GROUP $MYSQL_DATA_DIR" >> ${logdir}/main.log
chown -R ${MYSQL_USER}:$MYSQL_GROUP $MYSQL_DATA_DIR >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Konnte Besitzer/Gruppe für das Datenbankverzeichnis $MYSQL_DATA_DIR nicht setzen..
fi
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
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Konnte Konfigurationsdatei ${MYSQL_INSTALL_DIR}/my.cn nicht sichern..
fi
fi
echononl "Erstelle Konfigurationsdatei ${MYSQL_INSTALL_DIR}/my.cnf.."
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 "let MYSQL_THREAD_CONCURRENCY=$_number_cpus*2" >> ${logdir}/main.log
let MYSQL_THREAD_CONCURRENCY=$_number_cpus*2
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
# MySQL.
#
# You can copy this file to
# /etc/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options (in this
# installation this directory is /var/lib/mysql) or
# ~/.my.cnf to set user-specific options.
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.
# The following options will be passed to all MySQL clients
[client]
port = $MYSQL_PORT
socket = $MYSQL_UNIX_SOCKET
# Here follows entries for some specific programs
# The following values assume you have at least 32M ram
# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = $MYSQL_UNIX_SOCKET
nice = 0
open-files-limit = `ulimit -Hn`
innodb_open_files = `ulimit -Hn`
# The MySQL server
[mysqld]
port = $MYSQL_PORT
socket = $MYSQL_UNIX_SOCKET
## - skip_external_locking
## -
## - Affects only MyISAM table access.
## -
## - This is OFF if mysqld uses external locking (system locking),
## - ON if external locking is disabled.
## -
## - Default: ON
## -
skip-external-locking
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#
#bind-address = 127.0.0.1
bind-address = *
# Replication Master Server (default)
# binary logging is required for replication
#log-bin=mysql-bin
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 1
# Replication Slave (comment out master section to use this)
#
# To configure this host as a replication slave, you can choose between
# two methods :
#
# 1) Use the CHANGE MASTER TO command (fully described in our manual) -
# the syntax is:
#
# CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,
# MASTER_USER=<user>, MASTER_PASSWORD=<password> ;
#
# where you replace <host>, <user>, <password> by quoted strings and
# <port> by the master's port number (3306 by default).
#
# Example:
#
# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
# MASTER_USER='joe', MASTER_PASSWORD='secret';
#
# OR
#
# 2) Set the variables below. However, in case you choose this method, then
# start replication for the first time (even unsuccessfully, for example
# if you mistyped the password in master-password and the slave fails to
# connect), the slave will create a master.info file, and any later
# change in this file to the variables' values below will be ignored and
# overridden by the content of the master.info file, unless you shutdown
# the slave server, delete master.info and restart the slaver server.
# For that reason, you may want to leave the lines below untouched
# (commented) and instead use CHANGE MASTER TO (see above)
#
# required unique id between 2 and 2^32 - 1
# (and different from the master)
# defaults to 2 if master-host is set
# but will not function as a slave if omitted
#server-id = 2
#
# The replication master for this slave - required
#master-host = <hostname>
#
# The username the slave will use for authentication when connecting
# to the master - required
#master-user = <username>
#
# The password the slave will authenticate with when connecting to
# the master - required
#master-password = <password>
#
# The port the master is listening on.
# optional - defaults to 3306
#master-port = <port>
#
# binary logging - not required for slaves, but recommended
#log-bin=mysql-bin
#
# binary logging format - mixed recommended
#binlog_format=mixed
# Point the following paths to different dedicated disks
#tmpdir = /tmp/
#log-update = /path-to-dedicated-directory/hostname
## - max_connections
## -
## - Die zulässige Anzahl nebenläufiger Clientverbindungen. Wenn dieser Wert erhöht
## - wird, erhöht sich auch die Anzahl der Dateideskriptoren, die mysqld benötigt.
## -
## - Vorgabewert ist 100
## -
#max_connections = 300
## - explicit_defaults_for_timestamp
## -
## - This variable was added in MySQL 5.6.6
## -
## - In MySQL, the TIMESTAMP data type differs in nonstandard ways
## - from other data types. See MySQL Dokumentation.
## -
## - [Warning] TIMESTAMP with implicit DEFAULT value is deprecated.
## - Please use --explicit_defaults_for_timestamp server option (see
## - documentation for more details).
## -
## - As indicated by the warning, to turn off the nonstandard behaviors,
## - enable the new .
## -
#explicit_defaults_for_timestamp = TRUE
## - MySQL Fehlermeldungen
## -
## - !! Notice
## - erst ab für mysql 5.5.x
## -
## - lc-messages=de_DE
## - lc-messages-dir=`dirname $MYSQL_INSTALL_DIR`/mysql/share
## -
## - bis 5.1.x
## -
## - language=`dirname $MYSQL_INSTALL_DIR`/mysql/share/german
## -
## - low-priority-updates
## -
## - Give table-modifying operations (INSERT, REPLACE, DELETE,
## - UPDATE) lower priority than selects.
## -
## -
low-priority-updates = 1
## - concurrent_insert
## -
## - If activated (1 or AUTO, the default), MySQL permits INSERT
## - and SELECT statements to run concurrently for MyISAM tables
## - that have no free blocks in the middle of the data file.
## -
## - If set to 2 or ALWAYS, MySQL enables concurrent inserts for
## - all MyISAM tables, even those that have holes. For a table with
## - a hole, new rows are inserted at the end of the table if it is
## - in use by another thread. Otherwise, MySQL acquires a normal
## - write lock and inserts the row into the hole.
## -
concurrent_insert = 2
## - open-files-limit
## -
## - put the following lines into /etc/security/limits.conf
## -
## - @staff hard nofile 65536
## - root hard nofile 65536
## -
## - see also http://linux-vserver.org/Ulimit_Nofiles
## -
open-files-limit = `ulimit -Hn`
innodb_open_files = `ulimit -Hn`
## -------------------------
## InnoDB specific variables
## - innodb_file_per_table
## -
## - When innodb_file_per_table is enabled (the default in 5.6.6 and higher),
## - InnoDB stores the data and indexes for each newly created table in a
## - separate .ibd file, rather than in the system tablespace.
## -
innodb_file_per_table
## - innodb_data_home_dir
## -
## - Default: MySQL data directory
## -
#innodb_data_home_dir = /data/mysql
#innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
## - innodb_log_group_home_dir
## -
## - The directory path to the InnoDB redo log files, whose number
## - is specified by innodb_log_files_in_group.
## -
## - If you do not specify any InnoDB log variables, the default is
## - to create two files named ib_logfile0 and ib_logfile1 in the MySQL
## - data directory. Their size is given by the size of the
## - innodb_log_file_size system variable.
## -
#innodb_log_group_home_dir = /var/lib/mysql/
## - innodb_buffer_pool_size
## -
## - The size in bytes of the buffer pool, the memory area where InnoDB
## - caches table and index data.
## -
## - You can set .._buffer_pool_size up to 50 - 80 %
## - of RAM but beware of setting memory usage too high
## -
## - Note:
## - When the size of the buffer pool is greater than 1GB, setting
## - innodb_buffer_pool_instances to a value greater than 1 can improve
## - the scalability on a busy server.
## -
## - default: 134217728 (128M)
## -
#innodb_buffer_pool_size = 384M
innodb_buffer_pool_size = 1024M
#innodb_buffer_pool_size = 2G:w
## - innodb_additional_mem_pool_size
## -
## - The size in bytes of a memory pool InnoDB uses to store data dictionary
## - information and other internal data structures.
## -
## - Default: 8388608 (8M)
## -
#innodb_additional_mem_pool_size = 20M
#innodb_additional_mem_pool_size = 40M
innodb_additional_mem_pool_size = 50M
## - innodb_buffer_pool_instances
## -
## - The number of regions that the InnoDB buffer pool is divided into.
## -
## - Note:
## - For systems with buffer pools in the multi-gigabyte range, dividing
## - the buffer pool into separate instances can improve concurrency, by
## - reducing contention as different threads read and write to cached pages.
## -
## - Default: 1
## -
#innodb_buffer_pool_instances = 1
## - innodb_log_file_size
## -
## - The size in bytes of each log file in a log group.
## -
## - Default: 5242880 (5M)
## -
## (Set .._log_file_size to 25 % of buffer pool size)
## -
#innodb_log_file_size = 100M
#innodb_log_file_size = 256M
innodb_log_file_size = 750M
## - innodb_log_buffer_size
## -
## - The size in bytes of the buffer that InnoDB uses to write to the
## - log files on disk.
## -
## - Default: 8388608 (8M)
## -
#innodb_log_buffer_size = 8M
#innodb_log_buffer_size = 32M
innodb_log_buffer_size = 64M
## - innodb_flush_log_at_trx_commit
## -
## - Controls the balance between strict ACID compliance for commit
## - operations, and higher performance that is possible when
## - commit-related I/O operations are rearranged and done in batches.
## - You can achieve better performance by changing the default value,
## - but then you can lose up to one second worth of transactions in a crash.
## -
## - In case of extrem slowly restores set
## -
## - innodb_flush_log_at_trx_commit = 2
## - innodb_log_file_size = 256M
## -
## - Also try to add (befor DROP/CREATE/INSET Statements) to the dumpfile:
## -
## - ...
## - SET FOREIGN_KEY_CHECKS=0;
## - SET unique_checks=0;
## - SET AUTOCOMMIT=0;
## -
## - DROP TABLE IF EXISTS..
## - ...
## -
innodb_flush_log_at_trx_commit = 1
#innodb_flush_log_at_trx_commit = 2
## - innodb_lock_wait_timeout
## -
## - The length of time in seconds an InnoDB transaction waits for a row
## - lock before giving up.
## -
## - Default: 50
## -
#innodb_lock_wait_timeout = 50
## InnoDB specific variables
## -------------------------
## - sort_buffer_size
## -
## - Each session that needs to do a sort allocates a buffer of this size.
## - sort_buffer_size is not specific to any storage engine and applies
## - in a general manner for optimization.
## -
## - Default: 2097152 (2M)
## -
sort_buffer_size = 2M
sort_buffer_size = 256M
## - key_buffer_size
## -
## - key_buffer_size" is a MyISAM parameter !
## -
## - Index blocks for MyISAM tables are buffered and are shared by all threads.
## - key_buffer_size is the size of the buffer used for index blocks. The key
## - buffer is also known as the key cache.
## -
## - Default: 8388608 (8M)
## -
key_buffer_size = 384M
## - read_buffer_size
## -
## - Each thread that does a sequential scan for a MyISAM table allocates
## - a buffer of this size (in bytes) for each table it scans. If you do
## - many sequential scans, you might want to increase this value.
## -
## - Default: 131072 (128K)
## -
#read_buffer_size = 2M
read_buffer_size = 4M
## - read_rnd_buffer_size
## -
## - This variable is used for reads from MyISAM tables, and, for any
## - storage engine, for Multi-Range Read optimization.
## -
## - Default: 262144 (256K)
## -
read_rnd_buffer_size = 8M
## - myisam_sort_buffer_size
## -
## - The size of the buffer that is allocated when sorting MyISAM indexes
## - during a REPAIR TABLE or when creating indexes with CREATE INDEX or
## - ALTER TABLE.
## -
## - Default: 8388608 (8M)
## -
myisam_sort_buffer_size = 64M
## - max_allowed_packet
## -
## - The maximum size of one packet or any generated/intermediate string, or
## - any parameter sent by the mysql_stmt_send_long_data() C API function.
##
## - Default: 4MB (MySQL 5.6.6), 1MB before that.
## -
#max_allowed_packet = 4M
#max_allowed_packet = 32M
max_allowed_packet = 64M
## - table_open_cache
## -
## - The number of open tables for all threads. Increasing this value
## - increases the number of file descriptors that mysqld requires.
## -
## - You can check whether you need to increase the table cache by checking
## - the Opened_tables status variable. If the value of Opened_tables is large
## - and you do not use FLUSH TABLES often (which just forces all tables to be
## - closed and reopened), then you should increase the value of the
## - table_open_cache variable.
## -
#table_open_cache = 512
table_open_cache = 1024
## - table_definition_cache
## -
## - The number of table definitions (from .frm files) that can be stored
## - in the definition cache.
## -
## - Default: (400 + (table_open_cache / 2) since 5.6.8, 400 before
## -
#table_definition_cache = 1680
## - max_connect_errors
## -
## - Default: 100 (5.6.6), 10 (before)
## -
max_connect_errors = 999999
## - thread_concurrency
## -
## - NOTE:
## - This variable is specific to Solaris 8 and earlier systems.
## -
## - This variable is deprecated as of MySQL 5.6.1 and is removed in MySQL 5.7.
## - You should remove this from MySQL configuration files whenever you see it
## - unless they are for Solaris 8 or earlier
## -
## - (Try number of CPU's*2 for thread_concurrency)
## -
#thread_concurrency = 16
thread_concurrency = 16
## - thread_cache_size
## -
## - How many threads the server should cache for reuse. When a client
## - disconnects, the client's threads are put in the cache if there are
## - fewer than thread_cache_size threads there.
## -
## - Default: 8 + (max_connections / 100) (5.6.8) , 0 (before)
## -
#thread_cache_size = 8
thread_cache_size = 32
## - thread_stack
## -
## - The stack size for each thread. Many of the limits detected by
## - the crash-me test are dependent on this value.
## -
## - The default of 192KB (256KB for 64-bit systems) is large enough
## - for normal operation. If the thread stack size is too small, it
## - limits the complexity of the SQL statements that the server can handle,
## - the recursion depth of stored procedures, and other memory-consuming
## - actions.
## - Default: 262144 (256K)
## -
thread_stack = 262144
## - Unbenutze Datenbank Engines deaktivieren
## -
## - skip-innodb
## -
## - Deaktiviert die Unterstützung für InnoDB
## -
## - Sincs version 5.5, you have to set default-storage-engine
## - to MyISAM, if using skip-innodb
## -
#default-storage-engine=MyISAM
#skip-innodb
## - log-error
## -
## - Log errors and startup messages to this file. If you omit the file
## - name, MySQL uses host_name.err. If the file name has no extension,
## - the server adds an extension of .err.
## -
log-error = $_mysql_error_log
## - Query Log
## -
#general-log = on
#general_log_file = $_mysql_log
## - ft_min_word_len
## -
## - Die minimale Länge des Wortes, das in einem FULLTEXT-Index enthalten sein darf.
## -
## - Notice!
## - if you set
## - [mysqld]
## - ft_min_word_len=3
## -
## - you should also set
## - [myisamchk]
## - ft_min_word_len=3
## -
## -
## - Vorgabewert ist 4
#ft_min_word_len = 3
ft_min_word_len = 2
## - ft_stopword_file
## -
## - Datei, aus der die Liste der Stoppwörter für die Volltextsuche ausgelesen wird.
## - Es werden alle Wörter aus der Datei verwendet; Kommentare hingegen werden nicht
## - berücksichtigt. Standardmäßig wird eine eingebaute Liste mit Stoppwörtern (wie
## - in der Datei myisam/ft_static.c definiert) verwendet. Wird diesee Variable auf den
## - Leer-String gesetzt (''), wird die Ausfilterung von Stoppwörtern deaktiviert.
## -
## - Hinweis: Wird diese Variable geändern oder den Inhalt der Stoppwortdatei selbst,
## - müssen die FULLTEXT-Indizes neu erstellt werden (REPAIR TABLE tbl_name QUICK. ).
## -
#ft_stopword_file = /usr/local/mysql/stopwords_utf8_iso8859-15.txt
## -------------
## - query cache
## - query_cache_type
## -
## - 0 : verhindert das Speichern von Abfragen im und
## - das Abrufen aus dem Cache
## - 1 : gestattet das Speichern von Abfragen im Cache.
## - Ausgenommen sind Anweisungen, die mit
## - SELECT SQL_NO_CACHE beginnen.
## - 2 : speichert nur diejenigen Anweisungen im Cache,
## - die mit SELECT SQL_CACHE beginnen.
query_cache_type = 1
## - query_cache_limit
## -
## - Gibt die maximale Größe einzelner Abfrageergebnisse an, die im
## - Cache gespeichert werden können.
## -
## - Vorgeabewert ist 1Mbyte
## -
#query_cache_limit = 4M
query_cache_limit = 16M
## - query_cache_min_res_unit
## -
## - Die im Abfrage-Cache abgelegten Ergebnisse, werden nicht am Stück
## - verwaltet. Der Abfrage-Cache reserviert Blöcke zur Speicherung dieser
## - Daten nach Bedarf, d. h. wenn ein Block voll ist, wird der nächste
## - zugewiesen. Da der Speicherreservierungsvorgang (in zeitlicher Hinsicht)
## - aufwändig ist, reserviert der Abfrage-Cache die Blöcke mit einer
## - Mindestgröße, die durch die Systemvariable query_cache_min_res_unit
## - festgelegt wird. Wird eine Abfrage ausgeführt, dann wird der letzte
## - Ergebnisblock auf die tatsächliche Datengröße zugeschnitten, sodass
## - unbenutzter Speicher freigegeben wird.
## -
## - Siehe auch http://dev.mysql.com/doc/refman/5.1/de/query-cache-configuration.html
## -
## - Vorgabewert ist 4Kbyte
## -
query_cache_min_res_unit = 8K
## - query_cache_size
## -
## - Die Größe des Abfrage-Caches.
## -
## - Wird query_cache_size auf einen Wert größer Null gesetzt, so ist zu beachten,
## - dass der Abfrage-Cache eine Mindestgröße von ca. 40 Kbyte benötigt, um seine
## - Strukturen zuzuweisen. (Der exakte Wert hängt von der Systemarchitektur ab.)
## - Wird der Wert zu niedrig angesetzt, wird eine Warnung ausgegeben.
## -
## - Vorgabewert ist 0, d. h. der Abfrage-Cache ist vorgabeseitig deaktiviert.
## -
#query_cache_size = 32M
query_cache_size = 128M
## - query cache
## -------------
## --------------
## - slow queries
## - slow_query_log
## -
## - Gibt an, ob das Logging für langsame Abfragen eingeschaltet (1 oder ON)
## - bzw ausgeschaltet (0 oder OFF) ist.
## -
## - Vorgabewert ist 0 oder OFF
## -
slow_query_log = 1
## - long_query_time
## -
## - Wenn eine Abfrage länger dauert als durch diese Variable (in Sekunden) angegeben,
## - erhöht der Server die Statusvariable Slow_queries entsprechend. Wird die Option
## - --log-slow-queries verwendet, wird die Abfrage in der Logdatei für langsame Abfragen
## - protokolliert. Dieser Wert wird als Echtzeit (nicht als Prozessorzeit) gemessen, d. h.
## - eine Abfrage, die bei einem System mit geringer Belastung den Schwellwert
## - unterschreitet, kann bei einem stark belasteten System bereits darüber liegen.
## - Der Mindestwert ist 1.
## -
## - Vorgabewert ist 10
## -
long_query_time = 1
## - slow_query_log_file
## -
## - Name der Logdatei, in die langsame Abfragen gespeichert werden.
## -
## - Vorgabewert ist <host-name>-slow.log
## -
slow_query_log_file = $_mysql_slow_query_log
## - log-queries-not-using-indexes
## -
## - Gibt an, ob Abfragen, die keine Indizes benutzen in der Logdatei
## - für langsame Abfragen mitgespeichert werden sollen.
## -
## - Vorgabewert ist 0
## -
log_queries_not_using_indexes = 1
#log_queries_not_using_indexes = 0
## - slow queries
## --------------
## - join_buffer_size
## -
## - Die Größe des Puffers, der für Joins benutzt wird, die keine Indizes verwenden
## - und deswegen vollständige Tabellenscans durchführen. Normalerweise besteht die
## - beste Möglichkeit der Realisierung schneller Joins darin, Indizes hinzuzufügen.
## - Erhöhen Sie den Wert von join_buffer_size, um einen schnelleren vollständigen
## - Join zu implementieren, wenn das Hinzufügen von Indizes nicht möglich ist. Für
## - jeden vollständigen Join zwischen zwei Tabellen wird ein Join-Puffer hinzugefügt.
## - Für einen komplexen Join zwischen mehreren Tabellen, für den Indizes nicht verwendet
## - werden, sind unter Umständen mehrere Join-Puffer erforderlich.
## -
## - Wird die Option --log-slow-queries (ON) verwendet, werden Abfragen, die keine
## - Indizes verwenden, in das Log für langsame Abfragen geschrieben.
## -
## - Vorgabewert ist 128K
## -
#join_buffer_size = 384K
join_buffer_size = 512K
## - max_heap_table_size
## -
## - Diese Variable bestimmt die maximale Größe, auf die MEMORY-Tabellen anwachsen dürfen.
## - Der Wert der Variable wird zur Berechnung von MAX_ROWS-Werte für MEMORY-Tabellen
## - verwendet. Die Einstellung der Variable hat keine Auswirkungen auf bereits vorhandene
## - MEMORY-Tabellen, sofern diese nicht mit einer Anweisung wie CREATE TABLE neu erstellt
## - oder mit ALTER TABLE oder TRUNCATE TABLE modifiziert werden.
## -
## - Vorgabewert ist 16Mbyte
## -
#max_heap_table_size = 32M
max_heap_table_size = 96M
## - tmp_table_size
## -
## - Überschreitet eine temporäre Tabelle im Arbeitsspeicher diese Größe, wandelt MySQL
## - sie automatisch in eine MyISAM-Tabelle auf der Festplatte um.
## -
## - Werden viele erweiterte GROUP-BY-Anfragen ausgeführt (und ist genügend Speicher
## - vorhanden), so sollte diese Variable erhöht werden.
##
## - Default: 16777216 (16M)
## -
## - Note:
## - Effective in-memory tmp_table_size is limited to max_heap_table_size.
## -
#tmp_table_size = 96M
tmp_table_size = 128M
## - angepasste Einstellungen
## ------------------------------------------
[mysqldump]
quick
max_allowed_packet = 32M
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
## ------------------------------------------
## - angepasste Einstellungen
## - ft_min_word_len
## -
## - Die minimale Länge des Wortes, das in einem FULLTEXT-Index enthalten sein darf.
## -
## - Notice!
## - if you set
## - [mysqld]
## - ft_min_word_len=3
## -
## - you should also set
## - [myisamchk]
## - ft_min_word_len=3
## -
## -
## - Vorgabewert ist 4
#ft_min_word_len = 3
ft_min_word_len = 2
## - angepasste Einstellungen
## ------------------------------------------
[mysqlhotcopy]
interactive-timeout
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Konnte Konfigurationsdatei \"${MYSQL_INSTALL_DIR}/my.cnf\" nicht erstellen..
fi
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
echononl "Aktiviere Stopword Datei.."
echo "" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s/^(\s*#\s*)(ft_stopword_file.*)/#\1\2\n\2/\" /usr/local/mysql/my.cnf" >> ${logdir}/main.log
perl -i -n -p -e "s/^(\s*#\s*)(ft_stopword_file.*)/#\1\2\n\2/" /usr/local/mysql/my.cnf >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Konnte Stopword Datei \"stopwords_utf8_iso8859-15.txt\" nicht aktivieren."
fi
else
echo_failed
warn "Konnte stopwords_utf8_iso8859-15.txt nicht nach ${MYSQL_INSTALL_DIR} kopieren"
fi
else
echo_skipped
warn "Konnte ${MYSQL_SRC_BASE_DIR}/stopwords_utf8_iso8859-15.txt finden."
fi
#echononl "Kopiere Startscript nach /etc/init.d/mysql.server.."
#echo "" >> ${logdir}/main.log
#echo "cp -a ${MYSQL_INSTALL_DIR}/support-files/mysql.server /etc/init.d/mysql.server" >> ${logdir}/main.log
#cp -a ${MYSQL_INSTALL_DIR}/support-files/mysql.server /etc/init.d/mysql.server >> ${logdir}/main.log 2>&1
#if [ "$?" = "0" ]; then
# echo_ok
#else
# echo_failed
# fatal Konnte Startscript nicht nach /etc/init.d/mysql.server kopieren..
#fi
#echononl "Ersetze im Startscript: \"mysql-${_MYSQL_VERSION}\" durch \"mysql\".."
#echo "perl -i -n -p -e \"s/mysql-${_MYSQL_VERSION}/mysql/g\" /etc/init.d/mysql.server" >> ${logdir}/main.log
#perl -i -n -p -e "s/mysql-${_MYSQL_VERSION}/mysql/g" /etc/init.d/mysql.server >> ${logdir}/main.log 2>&1
#if [ "$?" = "0" ]; then
# echo_ok
#else
# echo_failed
#fi
#
#echo "" >> ${logdir}/main.log
#echo "chown root:root /etc/init.d/mysql.server" >> ${logdir}/main.log
#chown root:root /etc/init.d/mysql.server >> ${logdir}/main.log 2>&1
#
#echo "" >> ${logdir}/main.log
#echo "chmod 755 /etc/init.d/mysql.server" >> ${logdir}/main.log
#chmod 755 /etc/init.d/mysql.server >> ${logdir}/main.log 2>&1
if ! $UPDATE_MYSQL ; then
echononl "Starte MySQL Server beim Booten"
echo "" >> ${logdir}/main.log
echo "update-rc.d mysql.server defaults" >> ${logdir}/main.log
update-rc.d mysql.server defaults >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Konnte MySQL Init Script Links (autom. boot) nicht entfernen.."
fi
echononl "Starte MySQL Datenbankserver.."
echo "" >> ${logdir}/main.log
echo "/etc/init.d/mysql.server start" >> ${logdir}/main.log
/etc/init.d/mysql.server start >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Konnte MySQL Datenbankserver nicht starten..
fi
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
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 Password = password('$MYSQL_ROOT_PW')\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e "UPDATE user set Password = password('$MYSQL_ROOT_PW')" \
>> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Konnte MySQL root Zugang fü den MySQL Server nicht setzen..
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
echo_ok
else
echo_failed
fatal Das Laden/Erneuern der Berechtigungen für die MySQL Datenbank ist fehlgeschlagen..
fi
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
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
echo_ok
else
echo_failed
fatal Konnte Passwort für maintance \(MySQL\) User nicht erstellen..
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
echo_ok
else
echo_failed
fatal Konnte \(MySQL\) User \"${_maint_user}\" nicht erstellen..
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
echo_ok
else
echo_failed
fatal Das Laden/Erneuern der Berechtigungen für die MySQL Datenbank ist fehlgeschlagen..
fi
_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
password = $_maint_passwd
socket = $MYSQL_UNIX_SOCKET
[mysql_upgrade]
host = localhost
user = $_maint_user
password = $_maint_passwd
socket = $MYSQL_UNIX_SOCKET
basedir = /usr
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Konnte Konfigurationsdatei \"${MYSQL_INSTALL_DIR}/sys-maint.cnf\" nicht erstellen..
fi
echononl "Erstelle Logrotate Definitionsdatei /etc/logrotate.d/mysql.."
cat << EOF > /etc/logrotate.d/mysql
$_mysql_log
$_mysql_error_log
$_mysql_slow_query_log
{
daily
rotate 7
missingok
create 640 $MYSQL_USER $MYSQL_GROUP
compress
sharedscripts
postrotate
MYSQL="`dirname $MYSQL_INSTALL_DIR`/mysql/bin/mysql --defaults-file=$_maint_conf_file"
MYADMIN="`dirname $MYSQL_INSTALL_DIR`/mysql/bin/mysqladmin --defaults-file=$_maint_conf_file"
if [ -z "\`\$MYADMIN ping 2>/dev/null\`" ]; then
echo "Warning: no mysqld running or missing sys-maint user?"
else
\$MYSQL -e 'select @@global.long_query_time into @lqt_save; set global long_query_time=2000; select sleep(2); FLUSH LOGS; select sleep(2); set global long_query_time=@lqt_save;' > /dev/null
fi
endscript
}
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Konnte Logrotate Definitionsdatei \"/etc/logrotate.d/mysql\" nicht erstellen..
fi
echo
exit