2321 lines
71 KiB
Bash
Executable File
2321 lines
71 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
_MARIADB_VERSION=10.1.24
|
|
|
|
_MARIADB_SRC_BASE_DIR="$(realpath $(dirname $0))"
|
|
|
|
_MARIADB_LOG_DIR=/var/log/mysql
|
|
|
|
_MARIADB_PORT=3306
|
|
_MARIADB_UNIX_SOCKET=/tmp/mysql.sock
|
|
|
|
|
|
_MARIADB_USER=mysql
|
|
_MARIADB_GROUP=mysql
|
|
|
|
_DISTRIBUTION=Debian
|
|
|
|
#_VSERVER_GUEST=ja
|
|
_VSERVER_GUEST=nein
|
|
|
|
_required_debian_packages="libevent-dev
|
|
libjemalloc-dev
|
|
libboost-all-dev
|
|
libreadline-gplv2-dev
|
|
libjudy-dev
|
|
libpam0g-dev
|
|
libpcre3-dev
|
|
libgroonga-dev
|
|
default-jdk"
|
|
|
|
|
|
## - 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 "fataler Fehler: $*"
|
|
echo ""
|
|
echo -e "\t\033[31m\033[1mInstalllation wird abgebrochen\033[m\033[m"
|
|
echo ""
|
|
exit 1
|
|
}
|
|
|
|
error(){
|
|
echo ""
|
|
echo -e "\t[ \033[31m\033[1mFehler\033[m ]: $*"
|
|
echo ""
|
|
}
|
|
|
|
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 MariaDB 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_MARIADB=""
|
|
echo ""
|
|
echo -e "\033[32m--\033[m"
|
|
echo ""
|
|
echo "Soll eine vorhanden MariaDB Installation geupdateted werden?"
|
|
echo ""
|
|
echo "[1] Neuinstallation"
|
|
echo "[2] Update vorhandener Installation"
|
|
echo ""
|
|
echononl "Eingabe: "
|
|
|
|
|
|
while [ "$_UPDATE_MARIADB" != "update" -a "$_UPDATE_MARIADB" != "new" ];do
|
|
read OPTION
|
|
case $OPTION in
|
|
1) _UPDATE_MARIADB="new"
|
|
;;
|
|
2) _UPDATE_MARIADB="update"
|
|
;;
|
|
*) echo ""
|
|
echo -e "\tFalsche Eingabe ! [ 1 = Neuinstallation ; 2 = Update ]"
|
|
echo ""
|
|
echononl "Eingabe:"
|
|
;;
|
|
esac
|
|
done
|
|
if [ "$_UPDATE_MARIADB" = "update" ];then
|
|
UPDATE_MARIADB=true
|
|
else
|
|
UPDATE_MARIADB=false
|
|
fi
|
|
|
|
|
|
clear
|
|
echo -e "\033[21G\033[32mInstallationsscript für die MariaDB Datenbank \033[m"
|
|
echo ""
|
|
echo -e "\033[32m--\033[m"
|
|
echo ""
|
|
echo "Gib die Versionsnummer der MariaDB-Distribution an."
|
|
echo ""
|
|
MARIADB_VERSION=
|
|
while [ "X$MARIADB_VERSION" = "X" ]
|
|
do
|
|
echononl "MariaDB Version [$_MARIADB_VERSION]: "
|
|
read MARIADB_VERSION
|
|
if [ "X$MARIADB_VERSION" = "X" ]; then
|
|
MARIADB_VERSION=$_MARIADB_VERSION
|
|
fi
|
|
|
|
_MARIADB_INSTALL_DIR=/usr/local/mariadb-$MARIADB_VERSION
|
|
_MARIADB_DATA_DIR=/data/mariadb-$MARIADB_VERSION
|
|
distfile=mariadb-${MARIADB_VERSION}.tar.gz
|
|
done
|
|
MARIADB_MAJOR_VERSION=`echo $MARIADB_VERSION | cut -d '.' -f1,2`
|
|
|
|
echo ""
|
|
echo -e "\033[32m--\033[m"
|
|
echo ""
|
|
echo "Gib den Namen des MariaDB Sourceverzeichnisses an."
|
|
echo ""
|
|
MARIADB_SRC_BASE_DIR=
|
|
while [ "X$MARIADB_SRC_BASE_DIR" = "X" ]
|
|
do
|
|
echononl "MariaDB Sourceverzeichnis [${_MARIADB_SRC_BASE_DIR}]: "
|
|
read MARIADB_SRC_BASE_DIR
|
|
if [ "X$MARIADB_SRC_BASE_DIR" = "X" ]; then
|
|
MARIADB_SRC_BASE_DIR=$_MARIADB_SRC_BASE_DIR
|
|
fi
|
|
done
|
|
MARIADB_SRC_DIR=${MARIADB_SRC_BASE_DIR}/mariadb-$MARIADB_VERSION
|
|
|
|
echo ""
|
|
echo -e "\033[32m--\033[m"
|
|
echo ""
|
|
echo "Gib den Namen des Verzeichnisses in das MariaDB installiert werden soll an."
|
|
echo ""
|
|
MARIADB_INSTALL_DIR=
|
|
while [ "X$MARIADB_INSTALL_DIR" = "X" ]
|
|
do
|
|
echononl "MariaDB Installationsverzeichnis [${_MARIADB_INSTALL_DIR}]: "
|
|
read MARIADB_INSTALL_DIR
|
|
if [ "X$MARIADB_INSTALL_DIR" = "X" ]; then
|
|
MARIADB_INSTALL_DIR=$_MARIADB_INSTALL_DIR
|
|
LINK=yes
|
|
fi
|
|
|
|
logdir=${MARIADB_SRC_BASE_DIR}/log-$MARIADB_VERSION
|
|
|
|
done
|
|
|
|
echo ""
|
|
echo -e "\033[32m--\033[m"
|
|
echo ""
|
|
echo "Gib den Namen des Verzeichnisses für die MariaDB-Datenbanken an."
|
|
echo ""
|
|
MARIADB_DATA_DIR=
|
|
while [ "X$MARIADB_DATA_DIR" = "X" ]
|
|
do
|
|
echononl "MariaDB Datenbankverzeichnis [$_MARIADB_DATA_DIR]: "
|
|
read MARIADB_DATA_DIR
|
|
if [ "X$MARIADB_DATA_DIR" = "X" ]; then
|
|
MARIADB_DATA_DIR=$_MARIADB_DATA_DIR
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo -e "\033[32m--\033[m"
|
|
echo ""
|
|
echo "Gib den Namen des LOG-Verzeichnisses für die MariaDB an. !! NICHT für binäre logfiles !!"
|
|
echo ""
|
|
MARIADB_LOG_DIR=
|
|
while [ "X$MARIADB_LOG_DIR" = "X" ]
|
|
do
|
|
echononl "MariaDB LOG Verzeichniss [$_MARIADB_LOG_DIR]: "
|
|
read MARIADB_LOG_DIR
|
|
if [ "X$MARIADB_LOG_DIR" = "X" ]; then
|
|
MARIADB_LOG_DIR=$_MARIADB_LOG_DIR
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo -e "\033[32m--\033[m"
|
|
echo ""
|
|
echo "Gib den TCP Port für MariaDB an (voreingestell \"${MARIADB_PORT}\")."
|
|
echo ""
|
|
MARIADB_PORT=
|
|
while [ "X$MARIADB_PORT" = "X" ]
|
|
do
|
|
echononl "MariaDB TCP Port [$_MARIADB_PORT]: "
|
|
read MARIADB_PORT
|
|
if [ "X$MARIADB_PORT" = "X" ]; then
|
|
MARIADB_PORT=$_MARIADB_PORT
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo -e "\033[32m--\033[m"
|
|
echo ""
|
|
echo "Gib den Unix Socket für MariaDB an (voreingestell \"${_MARIADB_UNIX_SOCKET}\")."
|
|
echo ""
|
|
MARIADB_UNIX_SOCKET=
|
|
while [ "X$MARIADB_UNIX_SOCKET" = "X" ]
|
|
do
|
|
echononl "MariaDB UNIX Socket [$_MARIADB_UNIX_SOCKET]: "
|
|
read MARIADB_UNIX_SOCKET
|
|
if [ "X$MARIADB_UNIX_SOCKET" = "X" ]; then
|
|
MARIADB_UNIX_SOCKET=$_MARIADB_UNIX_SOCKET
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo "--"
|
|
echo ""
|
|
echo "Gib den User-Namen und die User-Gruppe unter dem der MariaDB-Daemon laufen soll an."
|
|
echo ""
|
|
MARIADB_USER=
|
|
while [ "X$MARIADB_USER" = "X" ]
|
|
do
|
|
echononl "MariaDB-User [${_MARIADB_USER}]: "
|
|
read MARIADB_USER
|
|
if [ "X$MARIADB_USER" = "X" ]; then
|
|
MARIADB_USER=$_MARIADB_USER
|
|
fi
|
|
done
|
|
MARIADB_GROUP=
|
|
while [ "X$MARIADB_GROUP" = "X" ]
|
|
do
|
|
echononl "MariaDB-Gruppe [$MARIADB_USER]: "
|
|
read MARIADB_GROUP
|
|
if [ "X$MARIADB_GROUP" = "X" ]; then
|
|
MARIADB_GROUP=$MARIADB_USER
|
|
fi
|
|
done
|
|
|
|
clear
|
|
echo -e "\033[21G\033[32mInstallationsscript für die MariaDB Datenbank \033[m"
|
|
echo ""
|
|
echo -e "\033[32m--\033[m"
|
|
echo ""
|
|
echo "Gib ein Passwort für den root user an.."
|
|
echo ""
|
|
_MARIADB_ROOT_PW_1="X"
|
|
_MARIADB_ROOT_PW_2="Y"
|
|
while [ "$_MARIADB_ROOT_PW_1" != "$_MARIADB_ROOT_PW_2" ]
|
|
do
|
|
echononl "Passworteingabe: "
|
|
read -s _MARIADB_ROOT_PW_1
|
|
echo
|
|
if [ "X$_MARIADB_ROOT_PW_1" = "X" ]; then
|
|
echo -e "\n\t\033[33m\033[1mPassworteingabe erforderlich!\033[m\n"
|
|
continue
|
|
fi
|
|
echononl "Passwortwiederholung: "
|
|
read -s _MARIADB_ROOT_PW_2
|
|
echo
|
|
if [ "X$_MARIADB_ROOT_PW_2" = "X" ]; then
|
|
echo -e "\n\t\033[33m\033[1mPasswortwiederholung erforderlich!\033[m\n"
|
|
continue
|
|
fi
|
|
if [ "$_MARIADB_ROOT_PW_1" != "$_MARIADB_ROOT_PW_2" ];then
|
|
echo -e "\n\t\033[33m\033[1mPassworteingaben sind nicht identisch!\033[m\n"
|
|
else
|
|
MARIADB_ROOT_PW=$_MARIADB_ROOT_PW_1
|
|
fi
|
|
done
|
|
|
|
if $UPDATE_MARIADB ; 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 MariaDB 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 $MARIADB_INSTALL_DIR`/mysql"
|
|
echo " - Setze Sysmlink for das Datenverzeichnis `dirname $MARIADB_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
|
|
|
|
|
|
|
|
OK=
|
|
echo ""
|
|
echo -e "\033[32m--\033[m"
|
|
echo ""
|
|
echo "Ist dies ein VServer Gastsystem?"
|
|
echo ""
|
|
echononl "VServer Gastsystem (ja/nein) [$_VSERVER_GUEST]: "
|
|
read OK
|
|
if [ "X$OK" = "X" ]; then
|
|
OK=$_VSERVER_GUEST
|
|
fi
|
|
OK=`echo "$OK" | tr '[:upper:]' '[:lower:]'`
|
|
while [ "X$OK" != "Xja" -a "X$OK" != "Xnein" ]; do
|
|
echo ""
|
|
echononl "\twrong entry! [ja/nein]: "
|
|
read OK
|
|
OK=`echo "$OK" | tr '[:upper:]' '[:lower:]'`
|
|
done
|
|
if [ "$OK" = "ja" ]; then
|
|
SYSTEMD_EXISTS=false
|
|
else
|
|
if [ "X`which systemd`" = "X" ]; then
|
|
SYSTEMD_EXISTS=false
|
|
else
|
|
SYSTEMD_EXISTS=true
|
|
fi
|
|
fi
|
|
|
|
|
|
clear
|
|
echo -e "\033[21G\033[32mStarte Installation mit folgenden Parametern:\033[m"
|
|
echo ""
|
|
if ! $UPDATE_MARIADB ; 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 ""
|
|
echo "MariaDB Versionsnummer....: $MARIADB_VERSION"
|
|
echo " MariaDB Major Verion....: $MARIADB_MAJOR_VERSION"
|
|
echo ""
|
|
echo "Sourcecodeverzeicnis......: $MARIADB_SRC_BASE_DIR"
|
|
echo "Installationsverzeichnis..: $MARIADB_INSTALL_DIR"
|
|
echo "Datenbankverzeichnis......: $MARIADB_DATA_DIR"
|
|
echo "Log Verzeichnis...........: $MARIADB_LOG_DIR"
|
|
echo "TCP Port..................: $MARIADB_PORT"
|
|
echo "Unix Socket...............: $MARIADB_UNIX_SOCKET"
|
|
echo "MariaDB-User..............: $MARIADB_USER"
|
|
echo "MariaDB-Gruppe............: $MARIADB_GROUP"
|
|
echo ""
|
|
echo "Symlink Initskript........: $SYMLINK_INITSCRIPT"
|
|
echo "Symlink Installationsverz.: $SYMLINK_INSTALL_DIR"
|
|
echo "Symlink Datenverzeichnis..: $SYMLINK_DATA_DIR"
|
|
echo ""
|
|
echo "Using systemd.............: $SYSTEMD_EXISTS"
|
|
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 ${MARIADB_SRC_BASE_DIR} ] ; then
|
|
mkdir -p $MARIADB_SRC_BASE_DIR
|
|
#fatal "Kann MariaDB Sourcecode Verzeichnis \"${MARIADB_SRC_BASE_DIR}\" nicht finden."
|
|
fi
|
|
|
|
|
|
## - Sorcecode vorhanden?
|
|
## -
|
|
if [ ! -f ${MARIADB_SRC_BASE_DIR}/$distfile ] ; then
|
|
|
|
echo ""
|
|
|
|
echononl "Download $distfile ..."
|
|
wget -O ${MARIADB_SRC_BASE_DIR}/$distfile http://ftp.hosteurope.de/mirror/archive.mariadb.org/mariadb-${MARIADB_VERSION}/source/$distfile 2>/dev/null
|
|
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
fatal "Downloading $distfile (https://ftp.hosteurope.de/mirror/archive.mariadb.org/mariadb-${MARIADB_VERSION}/source/$distfile) Fehlgeschlagen."
|
|
fi
|
|
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_MARIADB ; 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 "## - " >> ${logdir}/main.log
|
|
echo "## - MariaDB Versionsnummer....: $MARIADB_VERSION" >> ${logdir}/main.log
|
|
echo "## - MariaDB Major Verion...: $MARIADB_MAJOR_VERSION" >> ${logdir}/main.log
|
|
echo "## - " >> ${logdir}/main.log
|
|
echo "## - Sourcecodeverzeicnis......: $MARIADB_SRC_BASE_DIR" >> ${logdir}/main.log
|
|
echo "## - Installationsverzeichnis..: $MARIADB_INSTALL_DIR" >> ${logdir}/main.log
|
|
echo "## - Datenbankverzeichnis......: $MARIADB_DATA_DIR" >> ${logdir}/main.log
|
|
echo "## - Log Verzeichnis...........: $MARIADB_LOG_DIR" >> ${logdir}/main.log
|
|
echo "## - TCP Port..................: $MARIADB_PORT" >> ${logdir}/main.log
|
|
echo "## - Unix Socket...............: $MARIADB_UNIX_SOCKET" >> ${logdir}/main.log
|
|
echo "## - MariaDB-User..............: $MARIADB_USER" >> ${logdir}/main.log
|
|
echo "## - MariaDB-Gruppe............: $MARIADB_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_MARIADB=$UPDATE_MARIADB" >> ${logdir}/main.log
|
|
echo "" >> ${logdir}/main.log
|
|
echo "DISTRIBUTION=$DISTRIBUTION" >> ${logdir}/main.log
|
|
echo "" >> ${logdir}/main.log
|
|
echo "MARIADB_VERSION=$MARIADB_VERSION" >> ${logdir}/main.log
|
|
echo "MARIADB_SRC_BASE_DIR=$MARIADB_SRC_BASE_DIR" >> ${logdir}/main.log
|
|
echo "MARIADB_INSTALL_DIR=$MARIADB_INSTALL_DIR" >> ${logdir}/main.log
|
|
echo "MARIADB_DATA_DIR=$MARIADB_DATA_DIR" >> ${logdir}/main.log
|
|
echo "MARIADB_LOG_DIR=$MARIADB_LOG_DIR" >> ${logdir}/main.log
|
|
echo "MARIADB_PORT=$MARIADB_PORT" >> ${logdir}/main.log
|
|
echo "MARIADB_UNIX_SOCKET=$MARIADB_UNIX_SOCKET" >> ${logdir}/main.log
|
|
echo "MARIADB_USER=$MARIADB_USER" >> ${logdir}/main.log
|
|
echo "MARIADB_GROUP=$MARIADB_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
|
|
|
|
|
|
_MARIADB_INITSCRIPT=
|
|
if [ -f /etc/init.d/mysql.server ];then
|
|
_MARIADB_INITSCRIPT="mysql.server"
|
|
elif [ -f /etc/init.d/mysql ];then
|
|
_MARIADB_INITSCRIPT="mysql"
|
|
fi
|
|
|
|
if ! $UPDATE_MARIADB ; then
|
|
|
|
if [ "X${_MARIADB_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
|
|
if $SYSTEMD_EXISTS ; then
|
|
echo "systemctl stop mysql.server" >> ${logdir}/main.log
|
|
systemctl stop mysql.server >> ${logdir}/main.log 2>&1
|
|
else
|
|
echo "/etc/init.d/$_MARIADB_INITSCRIPT stop" >> ${logdir}/main.log
|
|
/etc/init.d/$_MARIADB_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
|
|
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 $_MARIADB_INITSCRIPT remove" >> ${logdir}/main.log
|
|
update-rc.d -f $_MARIADB_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/$_MARIADB_INITSCRIPT" ]; then
|
|
echononl "Entferne existierendes Initskript"
|
|
echo "" >> ${logdir}/main.log
|
|
echo "rm -f /etc/init.d/$_MARIADB_INITSCRIPT" >> ${logdir}/main.log
|
|
rm -f /etc/init.d/$_MARIADB_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
|
|
|
|
|
|
echononl "Update index files of the debian repositories"
|
|
echo "apt-get update" >> ${logdir}/apt-install.log
|
|
apt-get update >> ${logdir}/apt-install.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
echo "" >> ${logdir}/apt-install.log
|
|
else
|
|
echo_failed
|
|
fatal "\"apt-get update\" failed!"
|
|
fi
|
|
|
|
## - Install cmake if not exists
|
|
##
|
|
echononl "Installing \"cmake\".."
|
|
_cmake=`which cmake`
|
|
if [ "X$_cmake" = "X" ]; then
|
|
echo "DEBIAN_FRONTEND=noninteractive apt-get install -q -y cmake" >> ${logdir}/apt-install.log
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -q -y cmake >> ${logdir}/apt-install.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
echo "" >> ${logdir}/apt-install.log
|
|
else
|
|
echo_failed
|
|
fatal Kann \"cmake\" nicht installieren..
|
|
fi
|
|
else
|
|
echo_skipped
|
|
fi
|
|
|
|
## - Install dependency packages for \"mysql-server\"
|
|
## -
|
|
echononl "Installing dependency packages for \"mysql-server\""
|
|
echo "DEBIAN_FRONTEND=noninteractive apt-get -q -y build-dep mysql-server" >> ${logdir}/apt-install.log 2>&1
|
|
|
|
DEBIAN_FRONTEND=noninteractive apt-get -q -y build-dep mysql-server >> ${logdir}/apt-install.log 2>&1
|
|
if [ "$?" = 0 ]; then
|
|
echo_ok
|
|
echo "" >> ${logdir}/apt-install.log
|
|
else
|
|
echo_failed
|
|
fatal "Installing dependency packages for \"mysql-server\" failed!"
|
|
fi
|
|
|
|
if apt-cache search mariadb-server | grep -q -E "^mariadb-server" > /dev/null 2>&1 ; then
|
|
echononl "Installing dependency packages for \"mariadb-server\""
|
|
echo "DEBIAN_FRONTEND=noninteractive apt-get -q -y build-dep mariadb-server" >> ${logdir}/apt-install.log 2>&1
|
|
|
|
DEBIAN_FRONTEND=noninteractive apt-get -q -y build-dep mariadb-server >> ${logdir}/apt-install.log 2>&1
|
|
if [ "$?" = 0 ]; then
|
|
echo_ok
|
|
echo "" >> ${logdir}/apt-install.log
|
|
else
|
|
echo_failed
|
|
fatal "Installing dependency packages for \"mariadb-server\" failed!"
|
|
fi
|
|
fi
|
|
|
|
## - Install further debian packages
|
|
## -
|
|
declare -a deb_package_arr
|
|
for _debian_pkg in $_required_debian_packages ; do
|
|
deb_package_arr+=("$_debian_pkg")
|
|
done
|
|
|
|
for _debian_pkg in ${deb_package_arr[@]} ; do
|
|
|
|
echononl "Installing $_debian_pkg .."
|
|
if ! dpkg -l $_debian_pkg 2> /dev/null | grep -e "^ii" > /dev/null 2>&1 ; then
|
|
|
|
echo "" >> ${logdir}/apt-install.log
|
|
echo "DEBIAN_FRONTEND=noninteractive apt-get install -q -y $_debian_pkg" >> ${logdir}/apt-install.log
|
|
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -q -y $_debian_pkg >> ${_logdir}/debian-install.log 2>&1
|
|
if [ "$?" = 0 ]; then
|
|
echo_ok
|
|
echo "" >> ${logdir}/apt-install.log
|
|
else
|
|
echo_failed
|
|
error "Installing debian package \"$_debian_pkg\" failed!"
|
|
if [[ "$_debian_pkg" = "default-jdk" ]]; then
|
|
warn "Maybe deinstallation of \"hdparm\" solved this problem "
|
|
fi
|
|
fi
|
|
else
|
|
echo_skipped
|
|
fi
|
|
done
|
|
|
|
if ! grep -q -E "export\s*JAVA_HOME" /etc/profile.d/* > /dev/null 2>&1 ; then
|
|
echo "export JAVA_HOME=/usr/lib/jvm/default-java" >> /etc/profile.d/java.sh
|
|
export JAVA_HOME=/usr/lib/jvm/default-java
|
|
fi
|
|
|
|
echononl "Adding Group \"$MARIADB_GROUP\".."
|
|
if cat /etc/group | grep -e "^${MARIADB_GROUP}:" > /dev/null 2>&1 ; then
|
|
echo_skipped
|
|
else
|
|
groupadd -r $MARIADB_GROUP > ${logdir}/groupadd.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
fatal Kann Gruppe \"${MARIADB_GROUP}\" nicht erstellen..
|
|
fi
|
|
fi
|
|
|
|
echononl "Adding User \"$MARIADB_USER\".."
|
|
if id -u $MARIADB_USER > /dev/null 2>&1; then
|
|
echo_skipped
|
|
else
|
|
useradd -r -M -d /noexistent -s /bin/false -g $MARIADB_GROUP $MARIADB_USER > ${logdir}/useradd.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
fatal Kann User \"${MARIADB_USER}\" nicht erstellen..
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
|
|
if [ -d $MARIADB_DATA_DIR ]; then
|
|
echononl "Verschiebe exitierendes MariaDB Datenbank-Verzeichnis ..."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "mv $MARIADB_DATA_DIR ${MARIADB_DATA_DIR}.`date +\"%Y%m%d-%H%M\"`" >> ${logdir}/main.log
|
|
mv $MARIADB_DATA_DIR ${MARIADB_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 \"${MARIADB_DATA_DIR}\" nicht verschieben..
|
|
fi
|
|
fi
|
|
|
|
|
|
echononl "Erstelle Datenbank-Verzeichnis \"$MARIADB_DATA_DIR\".."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "mkdir -p $MARIADB_DATA_DIR" >> ${logdir}/main.log
|
|
mkdir -p $MARIADB_DATA_DIR >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
fatal Kann Datenbank-Verzeichnis \"${MARIADB_DATA_DIR}\" nicht erstellen..
|
|
fi
|
|
|
|
echononl "Setze Besitzer \"${MARIADB_USER}:${MARIADB_GROUP}\" für Datenbank-Verzeichnis"
|
|
echo "" >> ${logdir}/main.log
|
|
echo "chown -R ${MARIADB_USER}:${MARIADB_GROUP} ${MARIADB_DATA_DIR}" >> ${logdir}/main.log
|
|
chown -R ${MARIADB_USER}:${MARIADB_GROUP} ${MARIADB_DATA_DIR} >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
fatal Kann Besitzer für Datenbank-Verzeichnis \"${MARIADB_DATA_DIR}\" nicht ändern..
|
|
fi
|
|
|
|
echononl "Setze Verzeichnisrechte \"700\" für Datenbank-Verzeichnis"
|
|
echo "" >> ${logdir}/main.log
|
|
echo "chmod 700 ${MARIADB_DATA_DIR}" >> ${logdir}/main.log
|
|
chmod 700 ${MARIADB_DATA_DIR} >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
fatal Kann Verzeichnisrechte für Datenbank-Verzeichnis \"${MARIADB_DATA_DIR}\" nicht ändern..
|
|
fi
|
|
|
|
|
|
echononl "Erstelle LOG Verzeichnis \"$MARIADB_LOG_DIR\".."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "mkdir -p $MARIADB_LOG_DIR" >> ${logdir}/main.log
|
|
mkdir -p $MARIADB_LOG_DIR >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
_mariadb_log=${MARIADB_LOG_DIR}/mysql.log
|
|
_mariadb_error_log=${MARIADB_LOG_DIR}/mysql.err
|
|
_mariadb_slow_query_log=${MARIADB_LOG_DIR}/slow_query.log
|
|
else
|
|
echo_failed
|
|
fatal Kann LOG Verzeichnis \"${MARIADB_LOG_DIR}\" nicht erstellen..
|
|
fi
|
|
|
|
echononl "Setze Besitzer \"${MARIADB_USER}:${MARIADB_GROUP}\" für LOG Verzeichnis"
|
|
echo "" >> ${logdir}/main.log
|
|
echo "chown -R ${MARIADB_USER}:${MARIADB_GROUP} ${MARIADB_LOG_DIR}" >> ${logdir}/main.log
|
|
chown -R ${MARIADB_USER}:${MARIADB_GROUP} ${MARIADB_LOG_DIR} >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
fatal Kann Besitzer für LOG Verzeichnis \"${MARIADB_LOG_DIR}\" nicht ändern..
|
|
fi
|
|
|
|
echononl "Setze Verzeichnisrechte \"2750\" für LOG Verzeichnis"
|
|
echo "" >> ${logdir}/main.log
|
|
echo "chmod 2750 ${MARIADB_LOG_DIR}" >> ${logdir}/main.log
|
|
chmod 2750 ${MARIADB_LOG_DIR} >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
fatal Kann Verzeichnisrechte für LOG Verzeichnis \"${MARIADB_LOG_DIR}\" nicht ändern..
|
|
fi
|
|
|
|
|
|
#if [ -d "${MARIADB_SRC_BASE_DIR}/mariadb-$MARIADB_VERSION" ];then
|
|
# echononl "Verschiebe exitierendes Sourceverzeichnis ..."
|
|
# echo "" >> ${logdir}/main.log
|
|
# echo "mv ${MARIADB_SRC_BASE_DIR}/mariadb-$MARIADB_VERSION ${MARIADB_SRC_BASE_DIR}/mariadb-$MARIADB_VERSION.`date +\"%Y%m%d-%H%M\"`" >> ${logdir}/main.log
|
|
# mv ${MARIADB_SRC_BASE_DIR}/mariadb-$MARIADB_VERSION ${MARIADB_SRC_BASE_DIR}/mariadb-$MARIADB_VERSION.`date +"%Y%m%d-%H%M"` \
|
|
# >> ${logdir}/main.log 2>&1
|
|
# if [ "$?" = "0" ]; then
|
|
# echo_ok
|
|
# else
|
|
# echo_failed
|
|
# fatal Kann Sourceverzeichnis \"${MARIADB_SRC_BASE_DIR}/mariadb-$MARIADB_VERSION\" nicht verschieben..
|
|
# fi
|
|
#fi
|
|
|
|
|
|
if [ -d "${MARIADB_SRC_DIR}" ];then
|
|
echononl "Verschiebe exitierendes Sourceverzeichnis ..."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "mv ${MARIADB_SRC_DIR} ${MARIADB_SRC_DIR}.`date +\"%Y%m%d-%H%M\"`" >> ${logdir}/main.log
|
|
mv ${MARIADB_SRC_DIR} ${MARIADB_SRC_DIR}.`date +"%Y%m%d-%H%M"` >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
fatal Kann Sourceverzeichnis \"${MARIADB_SRC_DIR}\" nicht verschieben..
|
|
fi
|
|
fi
|
|
|
|
|
|
cd $MARIADB_SRC_BASE_DIR
|
|
echo "" >> ${logdir}/main.log
|
|
echo "cd $MARIADB_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 MariaDB Sourcearchiv \"${distfile}\" nicht entpacken..
|
|
fi
|
|
|
|
cd ${MARIADB_SRC_DIR}
|
|
echo "" >> ${logdir}/main.log
|
|
echo "cd ${MARIADB_SRC_DIR}" >> ${logdir}/main.log
|
|
|
|
if [ -d ${MARIADB_INSTALL_DIR} ];then
|
|
echononl "Verschiebe exitierendes Installationsverzeichnis ..."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "mv $MARIADB_INSTALL_DIR $MARIADB_INSTALL_DIR.`date +\"%Y%m%d-%H%M\"`" >> ${logdir}/main.log
|
|
mv $MARIADB_INSTALL_DIR $MARIADB_INSTALL_DIR.`date +"%Y%m%d-%H%M"` >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
fatal Kann Installationsverzeichnis \"${MARIADB_INSTALL_DIR}\" nicht verschieben..
|
|
fi
|
|
fi
|
|
|
|
echononl "Konfiguriere MariaDB (cmake).."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "cmake -D CMAKE_INSTALL_PREFIX=$MARIADB_INSTALL_DIR -D MYSQL_DATADIR=$MARIADB_DATA_DIR . " >> ${logdir}/main.log
|
|
cmake -D CMAKE_INSTALL_PREFIX=$MARIADB_INSTALL_DIR \
|
|
-D MYSQL_DATADIR=$MARIADB_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 MariaDB"
|
|
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 MariaDB Sourcen ist fehlgeschlagen. Siehe ${logdir}/make.log ..
|
|
fi
|
|
|
|
echononl "Installiere MariaDB"
|
|
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 MariaDB 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
|
|
error Kann Symlink /etc/init.d/mysql.server nicht entfernen..
|
|
fi
|
|
fi
|
|
|
|
if [[ -f "/etc/init.d/mysql.server" ]]; then
|
|
echononl "Entferne Startscript \"/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
|
|
error Kann Startscript /etc/init.d/mysql.server nicht entfernen..
|
|
fi
|
|
fi
|
|
|
|
echononl "Erstelle Symlink \"/etc/init.d/mysql.server\".."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "ln -s $MARIADB_INSTALL_DIR/support-files/mysql.server /etc/init.d/mysql.server" >> ${logdir}/main.log
|
|
ln -s $MARIADB_INSTALL_DIR/support-files/mysql.server /etc/init.d/mysql.server >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
error "Kann Symlink $MARIADB_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/" $(realpath /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 Installationsverzeichnis (i.d.R. /usr/local/mysql)
|
|
## -
|
|
if $SYMLINK_INSTALL_DIR ; then
|
|
|
|
if [ -h `dirname $MARIADB_INSTALL_DIR`/mysql ]; then
|
|
echononl "Entferne vorhandenen Symlink `dirname $MARIADB_INSTALL_DIR`/mysql.."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "rm `dirname $MARIADB_INSTALL_DIR`/mysql" >> ${logdir}/main.log
|
|
rm `dirname $MARIADB_INSTALL_DIR`/mysql >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
error Kann Symlink `dirname $MARIADB_INSTALL_DIR`/mysql nicht entfernen..
|
|
fi
|
|
fi
|
|
|
|
if [ -d `dirname $MARIADB_INSTALL_DIR`/mysql ]; then
|
|
echononl "Verschiebe Verzeichnis `dirname $MARIADB_INSTALL_DIR`/mysql ..."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "mv `dirname $MARIADB_INSTALL_DIR`/mysql `dirname $MARIADB_INSTALL_DIR`/mysql.`date +\"%Y%m%d-%H%M\"`" \
|
|
>> ${logdir}/main.log
|
|
mv `dirname $MARIADB_INSTALL_DIR`/mysql `dirname $MARIADB_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 \"${MARIADB_INSTALL_DIR}\" nicht verschieben..
|
|
fi
|
|
fi
|
|
|
|
echononl "Erstelle Symlink `dirname $MARIADB_INSTALL_DIR`/mysql --> $MARIADB_INSTALL_DIR"
|
|
echo "" >> ${logdir}/main.log
|
|
echo "ln -s `basename $MARIADB_INSTALL_DIR` `dirname $MARIADB_INSTALL_DIR`/mysql" >> ${logdir}/main.log
|
|
ln -s `basename $MARIADB_INSTALL_DIR` `dirname $MARIADB_INSTALL_DIR`/mysql >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
error Kann Symlink `basename $MARIADB_INSTALL_DIR` --> `dirname $MARIADB_INSTALL_DIR`/mysql nicht erstellen ..
|
|
fi
|
|
fi
|
|
|
|
## - Symlink Datenverzeichnis
|
|
## -
|
|
if $SYMLINK_DATA_DIR ; then
|
|
|
|
if [ -h `dirname $MARIADB_DATA_DIR`/mysql ]; then
|
|
echononl "Entferne vorhandenen Symlink `dirname $MARIADB_DATA_DIR`/mysql.."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "rm `dirname $MARIADB_DATA_DIR`/mysql" >> ${logdir}/main.log
|
|
rm `dirname $MARIADB_DATA_DIR`/mysql >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
error Kann Symlink `dirname $MARIADB_DATA_DIR`/mysql nicht entfernen..
|
|
fi
|
|
fi
|
|
|
|
if [ -d `dirname $MARIADB_DATA_DIR`/mysql ]; then
|
|
echononl "Verschiebe Verzeichnis `dirname $MARIADB_DATA_DIR`/mysql ..."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "mv `dirname $MARIADB_DATA_DIR`/mysql `dirname $MARIADB_DATA_DIR`/mysql.`date +\"%Y%m%d-%H%M\"`" \
|
|
>> ${logdir}/main.log
|
|
mv `dirname $MARIADB_DATA_DIR`/mysql `dirname $MARIADB_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 \"${MARIADB_DATA_DIR}\" nicht verschieben..
|
|
fi
|
|
fi
|
|
|
|
echononl "Erstelle Symlink `dirname $MARIADB_DATA_DIR`/mysql --> $MARIADB_DATA_DIR"
|
|
echo "" >> ${logdir}/main.log
|
|
echo "ln -s `basename $MARIADB_DATA_DIR` `dirname $MARIADB_DATA_DIR`/mysql" >> ${logdir}/main.log
|
|
ln -s `basename $MARIADB_DATA_DIR` `dirname $MARIADB_DATA_DIR`/mysql >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
error Kann Symlink `basename $MARIADB_DATA_DIR` --> `dirname $MARIADB_DATA_DIR`/mysql nicht erstellen ..
|
|
fi
|
|
fi
|
|
|
|
|
|
echononl "Füge `dirname $MARIADB_INSTALL_DIR`/mysql/bin zur PATH Variable hinzu .."
|
|
if [ -f /etc/profile ]; then
|
|
_mariadb_bin_dir="`dirname $MARIADB_INSTALL_DIR`/mysql/bin"
|
|
if ! grep -e "PATH=.*$_mariadb_bin_dir" /etc/profile > /dev/null 2<&1 ; then
|
|
echo "" >> ${logdir}/main.log
|
|
echo "perl -i -n -p -e \"s#^([ ]*export[ ]*PATH.*$)#check_dir=\$_mariadb_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=$_mariadb_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 $_mariadb_bin_dir >> ${logdir}/main.log 2>&1 ; then
|
|
export PATH=${_mariadb_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 $MARIADB_INSTALL_DIR`/mysql/lib
|
|
EOF
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
error 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
|
|
error "Der Befehl \"ldconfig\" ist fehgeschlagen"
|
|
fi
|
|
|
|
if [ -f ${MARIADB_INSTALL_DIR}/my.cnf ]; then
|
|
echononl "Sichere Konfigurationsdatei.."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "${MARIADB_INSTALL_DIR}/my.cnf ${MARIADB_INSTALL_DIR}" >> ${logdir}/main.log
|
|
mv ${MARIADB_INSTALL_DIR}/my.cnf ${MARIADB_INSTALL_DIR}/my.cnf.ORIG
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
error Konnte Konfigurationsdatei ${MARIADB_INSTALL_DIR}/my.cnf nicht sichern..
|
|
fi
|
|
fi
|
|
|
|
echononl "Erstelle Konfigurationsdatei ${MARIADB_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 MARIADB_THREAD_CONCURRENCY=$_number_cpus*2" >> ${logdir}/main.log
|
|
let MARIADB_THREAD_CONCURRENCY=$_number_cpus*2
|
|
|
|
echo "" >> ${logdir}/main.log
|
|
echo "\$MARIADB_THREAD_CONCURRENCY = $MARIADB_THREAD_CONCURRENCY" >> ${logdir}/main.log
|
|
|
|
cat << EOF > ${MARIADB_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 = $MARIADB_PORT
|
|
socket = $MARIADB_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 = $MARIADB_UNIX_SOCKET
|
|
nice = 0
|
|
|
|
open-files-limit = `ulimit -Hn`
|
|
innodb_open_files = `ulimit -Hn`
|
|
|
|
|
|
# The MySQL server
|
|
[mysqld]
|
|
port = $MARIADB_PORT
|
|
socket = $MARIADB_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 = 127.0.0.1
|
|
|
|
|
|
# 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 $MARIADB_INSTALL_DIR`/mysql/share
|
|
## -
|
|
## - bis 5.1.x
|
|
## -
|
|
## - language=`dirname $MARIADB_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 32768
|
|
## - root hard nofile 32768
|
|
## -
|
|
## - 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_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_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_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_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
|
|
|
|
|
|
## - 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_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
|
|
|
|
|
|
## - 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_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_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_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 = $_mariadb_error_log
|
|
|
|
|
|
## - Query Log
|
|
## -
|
|
#general-log = on
|
|
#general_log_file = $_mariadb_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_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_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 = $_mariadb_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
|
|
|
|
|
|
|
|
## - 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 = 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
|
|
|
|
|
|
## - 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
|
|
|
|
## - angepasste Einstellungen
|
|
## ------------------------------------------
|
|
|
|
|
|
[mysqlhotcopy]
|
|
interactive-timeout
|
|
|
|
EOF
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
error Konnte Konfigurationsdatei \"${MARIADB_INSTALL_DIR}/my.cnf\" nicht erstellen..
|
|
fi
|
|
|
|
echononl "Kopiere \"stopwords_utf8_iso8859-15.txt\" -> ${MARIADB_INSTALL_DIR}.."
|
|
if [ -f "${MARIADB_SRC_BASE_DIR}/stopwords_utf8_iso8859-15.txt" ];then
|
|
cp ${MARIADB_SRC_BASE_DIR}/stopwords_utf8_iso8859-15.txt ${MARIADB_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 ${MARIADB_INSTALL_DIR} kopieren"
|
|
fi
|
|
else
|
|
echo_skipped
|
|
warn "Konnte ${MARIADB_SRC_BASE_DIR}/stopwords_utf8_iso8859-15.txt finden."
|
|
fi
|
|
|
|
echo
|
|
echononl "Richte MySQL Systemtabellen ein.."
|
|
cd $MARIADB_INSTALL_DIR
|
|
echo "" >> ${logdir}/main.log
|
|
echo "./scripts/mysql_install_db \ " >> ${logdir}/main.log
|
|
echo " --user=$MARIADB_USER \ " >> ${logdir}/main.log
|
|
echo " --basedir=$MARIADB_INSTALL_DIR \ " >> ${logdir}/main.log
|
|
echo " --datadir=$MARIADB_DATA_DIR \ " >> ${logdir}/main.log
|
|
echo " --language=$MARIADB_INSTALL_DIR/share/german" >> ${logdir}/main.log
|
|
echo "" >> ${logdir}/main.log
|
|
|
|
./scripts/mysql_install_db \
|
|
--basedir=$MARIADB_INSTALL_DIR \
|
|
--datadir=$MARIADB_DATA_DIR \
|
|
--user=$MARIADB_USER \
|
|
>> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
fatal Das Einrichten der MySQL Systemtabellen ist fehlgeschlagen..
|
|
fi
|
|
|
|
echononl "Create directory \"mysql-files\".."
|
|
cd $MARIADB_INSTALL_DIR
|
|
echo "" >> ${logdir}/main.log
|
|
echo "mkdir mysql-files" >> ${logdir}/main.log
|
|
mkdir mysql-files >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
fi
|
|
|
|
echononl "Change rights (770) to directory \"mysql-files\".."
|
|
echo "chmod 770 mysql-files" >> ${logdir}/main.log
|
|
chmod 770 ${MARIADB_INSTALL_DIR}/mysql-files >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
fi
|
|
|
|
echononl "Change owner ($MARIADB_USER) of directory \"mysql-files\".."
|
|
echo "chown $MARIADB_USER mysql-files" >> ${logdir}/main.log
|
|
chown $MARIADB_USER ${MARIADB_INSTALL_DIR}/mysql-files >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
fi
|
|
|
|
echononl "Generate MySQL SSL Certificate and RSA Key.."
|
|
cd $MARIADB_INSTALL_DIR
|
|
if [[ -x "$MARIADB_INSTALL_DIRbin/mysql_ssl_rsa_setup" ]] ; then
|
|
echo "bin/mysql_ssl_rsa_setup --datadir=$MARIADB_DATA_DIR .." >> ${logdir}/main.log
|
|
bin/mysql_ssl_rsa_setup --datadir=$MARIADB_DATA_DIR >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
fi
|
|
else
|
|
echo_skipped
|
|
warn "Script for generating certificates (mysql_ssl_rsa_setup) is not supported"
|
|
fi
|
|
|
|
echononl "Setze Besitzer/Gruppe für das Datenbankverzeichnis.."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "chown -R ${MARIADB_USER}:$MARIADB_GROUP $MARIADB_DATA_DIR" >> ${logdir}/main.log
|
|
chown -R ${MARIADB_USER}:$MARIADB_GROUP $MARIADB_DATA_DIR >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
error Konnte Besitzer/Gruppe für das Datenbankverzeichnis $MARIADB_DATA_DIR nicht setzen..
|
|
fi
|
|
|
|
|
|
if ! $UPDATE_MARIADB ; then
|
|
|
|
echononl "Starte MySQL Server beim Booten"
|
|
echo "" >> ${logdir}/main.log
|
|
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
|
|
fi
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
if $SYSTEMD_EXISTS ; then
|
|
error "Konnte \"mysql.server\" im systemd nicht enablen.."
|
|
else
|
|
error "Konnte MySQL Init Script Links (autom. boot) nicht erstellen.."
|
|
fi
|
|
fi
|
|
|
|
echononl "Starte MySQL Datenbankserver.."
|
|
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
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
error Konnte MySQL Datenbankserver nicht starten..
|
|
fi
|
|
fi
|
|
|
|
sleep 5
|
|
echononl "Run \"mysql_upgrade -uroot\".."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "${MARIADB_INSTALL_DIR}/bin/mysql_upgrade -uroot" >> ${logdir}/main.log
|
|
${MARIADB_INSTALL_DIR}/bin/mysql_upgrade -uroot >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
error "Script \"mysql_upgrade -uroot\" failed!"
|
|
fi
|
|
|
|
echononl "Delete empty User in table mysql.user.."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "${MARIADB_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e \"DELETE FROM user where User = ''\"" >> ${logdir}/main.log
|
|
${MARIADB_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e "DELETE FROM user where User = ''" >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
error "Deleting empty User in table mysql.user failed!"
|
|
fi
|
|
|
|
echononl "Delete database \"test\".."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "${MARIADB_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e \"DROP DATABASE test\"" >> ${logdir}/main.log
|
|
${MARIADB_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e "DROP DATABASE test" >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
error "Dropping Database \"test\" failed!"
|
|
fi
|
|
|
|
echononl "Delete entries for test database in table mysql.db"
|
|
echo "" >> ${logdir}/main.log
|
|
echo "${MARIADB_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e \"DELETE FROM db where Db LIKE 'test%'\"" >> ${logdir}/main.log
|
|
${MARIADB_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e "DELETE FROM db where Db LIKE 'test%'" >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
error "Deleting empty User in table mysql.user failed!"
|
|
fi
|
|
|
|
#echononl "Setze root Passwort (authentication_string) für den MySQL Zugang"
|
|
#echo "" >> ${logdir}/main.log
|
|
#echo "${MARIADB_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e \"UPDATE user set authentication_string = password('$MARIADB_ROOT_PW')\"" >> ${logdir}/main.log
|
|
#${MARIADB_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e "UPDATE user set authentication_string = password('$MARIADB_ROOT_PW')" \
|
|
# >> ${logdir}/main.log 2>&1
|
|
#if [ "$?" = "0" ]; then
|
|
# echo_ok
|
|
#else
|
|
# echo_failed
|
|
# error Konnte MySQL root Zugang fü den MySQL Server nicht setzen..
|
|
#fi
|
|
|
|
echononl "Setze root Passwort (password) für den MySQL Zugang"
|
|
echo "" >> ${logdir}/main.log
|
|
echo "${MARIADB_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e \"UPDATE user set Password = password('$MARIADB_ROOT_PW')\"" >> ${logdir}/main.log
|
|
${MARIADB_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e "UPDATE user set Password = password('$MARIADB_ROOT_PW')" \
|
|
>> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
error Konnte MySQL root Zugang fü den MySQL Server nicht setzen..
|
|
fi
|
|
|
|
echononl "Neu Einlesen der Berechtigung (MySQL Server).."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "${MARIADB_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e \"FLUSH PRIVILEGES\"" >> ${logdir}/main.log
|
|
${MARIADB_INSTALL_DIR}/bin/mysql -uroot mysql -N -s -e "FLUSH PRIVILEGES" >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
error 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
|
|
error 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 "${MARIADB_INSTALL_DIR}/bin/mysql -uroot -p$MARIADB_ROOT_PW mysql -N -s -e \"GRANT ALL ON *.* TO '${_maint_user}'@'localhost' IDENTIFIED BY '$_maint_passwd'\"" >> ${logdir}/main.log
|
|
${MARIADB_INSTALL_DIR}/bin/mysql -uroot -p$MARIADB_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
|
|
error Konnte \(MySQL\) User \"${_maint_user}\" nicht erstellen..
|
|
fi
|
|
|
|
echononl "Give \"Grant\" permission to MySQL User \"${_maint_user}\".."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "${MARIADB_INSTALL_DIR}/bin/mysql -uroot -p$MARIADB_ROOT_PW mysql -N -s -e \"UPDATE user SET Grant_priv = 'y' WHERE user = '${_maint_user}';\"" >> ${logdir}/main.log
|
|
${MARIADB_INSTALL_DIR}/bin/mysql -uroot -p$MARIADB_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
|
|
echo_failed
|
|
error Giving \"Grant\"-permission to \(MySQL\) User \"${_maint_user}\" failed
|
|
fi
|
|
|
|
echononl "Neu Einlesen der Berechtigung (MySQL Server).."
|
|
echo "" >> ${logdir}/main.log
|
|
echo "${MARIADB_INSTALL_DIR}/bin/mysql -uroot -p$MARIADB_ROOT_PW mysql -N -s -e \"FLUSH PRIVILEGES\"" >> ${logdir}/main.log
|
|
${MARIADB_INSTALL_DIR}/bin/mysql -uroot -p$MARIADB_ROOT_PW mysql -N -s -e "FLUSH PRIVILEGES" >> ${logdir}/main.log 2>&1
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
error Das Laden/Erneuern der Berechtigungen für die MySQL Datenbank ist fehlgeschlagen..
|
|
fi
|
|
|
|
|
|
_maint_conf_file=${MARIADB_INSTALL_DIR}/sys-maint.cnf
|
|
echononl "Erstelle ${_maint_conf_file}.."
|
|
cat << EOF > ${MARIADB_INSTALL_DIR}/sys-maint.cnf
|
|
[client]
|
|
host = localhost
|
|
user = $_maint_user
|
|
password = $_maint_passwd
|
|
socket = $MARIADB_UNIX_SOCKET
|
|
[mysql_upgrade]
|
|
host = localhost
|
|
user = $_maint_user
|
|
password = $_maint_passwd
|
|
socket = $MARIADB_UNIX_SOCKET
|
|
basedir = /usr
|
|
EOF
|
|
if [ "$?" = "0" ]; then
|
|
echo_ok
|
|
else
|
|
echo_failed
|
|
error Konnte Konfigurationsdatei \"${MARIADB_INSTALL_DIR}/sys-maint.cnf\" nicht erstellen..
|
|
fi
|
|
|
|
|
|
echononl "Erstelle Logrotate Definitionsdatei /etc/logrotate.d/mysql.."
|
|
cat << EOF > /etc/logrotate.d/mysql
|
|
$_mariadb_log
|
|
$_mariadb_error_log
|
|
$_mariadb_slow_query_log
|
|
{
|
|
daily
|
|
rotate 7
|
|
missingok
|
|
create 644 $MARIADB_USER $MARIADB_GROUP
|
|
compress
|
|
sharedscripts
|
|
postrotate
|
|
MYSQL="`dirname $MARIADB_INSTALL_DIR`/mysql/bin/mysql --defaults-file=$_maint_conf_file"
|
|
MYADMIN="`dirname $MARIADB_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
|
|
error Konnte Logrotate Definitionsdatei \"/etc/logrotate.d/mysql\" nicht erstellen..
|
|
fi
|
|
|
|
|
|
echo
|
|
exit
|