mysql/install_mysql_openssl_111.sh

7148 lines
238 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
_backup_date="$(date +"%Y-%m-%d-%H%M")"
_MYSQL_SRC_BASE_DIR=$(dirname $(realpath $0))
_MYSQL_LOG_DIR=/var/log/mysql
_MYSQL_PORT=3306
_MYSQL_UNIX_SOCKET=/run/mysqld/mysqld.sock
_MYSQL_USER=mysql
_MYSQL_GROUP=mysql
_DISTRIBUTION=Debian
_VSERVER_GUEST=nein
_required_debian_packages="default-jdk
libncurses5-dev
libssl-dev
lsb-release
gnutls-dev
libaio-dev
libarchive-dev
libbison-dev
libboost-all-dev
libcrack2-dev
libdw-dev
libelf-dev
libevent-dev
libgroonga-dev
libjemalloc-dev
libjudy-dev
libpam0g-dev
libpcre3-dev
libreadline-dev
libsystemd-dev
libaio-dev
libjemalloc-dev
cpanminus"
# NOT available since debian bullseye
#
#libreadline-gplv2-dev
install_additional_debian_packages=true
_additional_debian_packages_mysql=""
_additional_debian_packages_percona="libperconaserverclient20-dev"
_additional_debian_packages_mariadb="libmariadbclient-dev-compat"
_CRONTAB_BAKUP_FILE="$(mktemp)"
## - 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
## ---
clean_up() {
# Perform program exit housekeeping
if [[ -s "$_CRONTAB_BAKUP_FILE" ]]; then
crontab -u root $_CRONTAB_BAKUP_FILE
fi
rm -f $_CRONTAB_BAKUP_FILE
exit $1
}
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 ""
clean_up 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 ""
}
info (){
echo ""
echo -e "\t[ \033[32m\033[1mInfo\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 ]"
}
echo_wait(){
echo -en "\033[75G[ \033[5m\033[1m..\033[m ]"
}
detect_os_1 () {
if $(which lsb_release > /dev/null 2>&1) ; then
os_dist="$(lsb_release -i | awk '{print tolower($3)}')"
os_version="$(lsb_release -r | awk '{print tolower($2)}')"
os_codename="$(lsb_release -c | awk '{print tolower($2)}')"
if [[ "$os_dist" = "debian" ]]; then
if $(echo "$os_version" | grep -q '\.') ; then
os_version=$(echo "$os_version" | cut --delimiter='.' -f1)
fi
fi
elif [[ -e "/etc/os-release" ]]; then
. /etc/os-release
os_dist=$ID
os_version=${os_version_ID}
fi
# remove whitespace from os_dist and os_version
os_dist="${os_dist// /}"
os_version="${os_version// /}"
}
## ---
## --- END: functions
trap clean_up SIGHUP SIGINT SIGTERM
_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
# - OS supports systemd ?
# -
_systemd="$(which systemd)"
_systemctl="$(which systemctl)"
if [[ -z "$_systemd" ]] && [[ -z "$_systemctl" ]]; then
SYSTEMD_EXISTS=false
else
SYSTEMD_EXISTS=true
fi
# - Set variable
# - os_dist
# - os_version
# - os_codename
# -
detect_os_1
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 "[3] Parallelinstallation (nur Neuinstallation)"
echo ""
echononl "Eingabe: "
while [ "$_UPDATE_MYSQL" != "update" -a "$_UPDATE_MYSQL" != "new" -a "$_UPDATE_MYSQL" != "parallel" ];do
read OPTION
case $OPTION in
1) _UPDATE_MYSQL="new"
;;
2) _UPDATE_MYSQL="update"
;;
3) _UPDATE_MYSQL="parallel"
;;
*) echo ""
echo -e "\tFalsche Eingabe ! [ 1 = Neuinstallation ; 2 = Update ; 3 = Parallelinstallation]"
echo ""
echononl "Eingabe:"
;;
esac
done
if [ "$_UPDATE_MYSQL" = "update" ];then
UPDATE_MYSQL=true
else
UPDATE_MYSQL=false
fi
if [ "$_UPDATE_MYSQL" = "parallel" ];then
PARALLEL_INSTALLATION=true
else
PARALLEL_INSTALLATION=false
fi
if ! $UPDATE_MYSQL ; then
MYSQL_DISTRIBUTION=
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Select the MySQL distribution to install."
echo ""
echo "[1] MySQL (the original community edition)"
echo "[2] Percona Server for MySQL"
echo "[3] MariaDB"
echo ""
echononl "Eingabe [1/2/3]: "
while [ "$MYSQL_DISTRIBUTION" != "MySQL" -a "$MYSQL_DISTRIBUTION" != "MariaDB" -a "$MYSQL_DISTRIBUTION" != "Percona" ];do
read OPTION
case $OPTION in
1) MYSQL_DISTRIBUTION="MySQL"
;;
2) MYSQL_DISTRIBUTION="Percona"
;;
3) MYSQL_DISTRIBUTION="MariaDB"
;;
*) echo ""
echo -e "\tFalsche Eingabe ! [ 1 = MySQL ; 2 = Percona ; 3 = MariaDB ]"
echo ""
echononl "Eingabe:"
;;
esac
done
fi
if [[ -n "$(which mysqld)" ]] ; then
if ! $PARALLEL_INSTALLATION && ! $UPDATE_MYSQL ; then
fatal "Found binary '$(which mysqld)', but you are not in update mode!"
fi
else
if $UPDATE_MYSQL ; then
fatal "No installed MySQL server or distribution found, but you are in update mode!"
fi
fi
if $UPDATE_MYSQL ; then
_MYSQLD_VERSION="$(mysqld -V 2>/dev/null)"
echo ""
echononl "Get current MySQL distribution .."
if [[ -z "$_MYSQLD_VERSION" ]]; then
echo_failed
fatal "No installed MySQL server or distribution found!"
elif [[ "$_MYSQLD_VERSION" =~ MariaDB ]]; then
MYSQL_CUR_DISTRIBUTION="MariaDB"
elif [[ "$(basename "$(realpath "/usr/local/mysql")")" =~ percona- ]]; then
MYSQL_CUR_DISTRIBUTION="Percona"
elif [[ "$(basename "$(realpath "/usr/local/mysql")")" =~ mysql- ]]; then
MYSQL_CUR_DISTRIBUTION="MySQL"
fi
echo_ok
echononl "Get current MySQL Version.."
CURRENT_VERSION="$(echo $_MYSQLD_VERSION | grep -o -E "[0-9]+\.[0-9]+\.[0-9]+(-[0-9]+)?" | head -n 1)"
CURRENT_MAIN_VERSION="$(echo $CURRENT_VERSION | cut -d '.' -f1,2)"
if [[ -n "$CURRENT_VERSION" ]]; then
echo_ok
else
echo_failed
fatal "Getting current mysql version failed!"
fi
info "Currently installed: $MYSQL_CUR_DISTRIBUTION version $CURRENT_VERSION"
if [[ "$MYSQL_CUR_DISTRIBUTION" = "MariaDB" ]]; then
MYSQL_DISTRIBUTION="MariaDB"
warn "Update with a MySQL distribution other than 'MariaDB' is not supported!"
else
MYSQL_DISTRIBUTION=
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Select the MySQL distribution to install."
echo ""
echo "Note:"
echo " Update the current installation with MariaDB is not supported!"
echo ""
echo "[1] MySQL (the original community edition)"
echo "[2] Percona Server for MySQL"
echo ""
echononl "Eingabe [1/2]: "
while [ "$MYSQL_DISTRIBUTION" != "MySQL" -a "$MYSQL_DISTRIBUTION" != "Percona" ];do
read OPTION
case $OPTION in
1) MYSQL_DISTRIBUTION="MySQL"
;;
2) MYSQL_DISTRIBUTION="Percona"
;;
*) echo ""
echo -e "\tFalsche Eingabe ! [ 1 = MySQL ; 2 = Percona ]"
echo ""
echononl "Eingabe:"
;;
esac
done
fi
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 zu installierenden MySQL-Distribution (${MYSQL_DISTRIBUTION}) an."
echo ""
MYSQL_VERSION=
while [ "X$MYSQL_VERSION" = "X" ]
do
echononl "$MYSQL_DISTRIBUTION Version : "
read MYSQL_VERSION
if [ "X$MYSQL_VERSION" = "X" ]; then
MYSQL_VERSION=$_MYSQL_VERSION
fi
_MYSQL_INSTALL_DIR=/usr/local/${MYSQL_DISTRIBUTION,,}-$MYSQL_VERSION
_MYSQL_DATA_DIR=/data/${MYSQL_DISTRIBUTION,,}-$MYSQL_VERSION
done
MYSQL_MAIN_VERSION=`echo $MYSQL_VERSION | cut -d '.' -f1,2`
MYSQL_MAJOR_VERSION=`echo $MYSQL_VERSION | cut -d '.' -f1`
MYSQL_MINOR_VERSION=`echo $MYSQL_VERSION | cut -d '.' -f2`
MYSQL_PATCH_LEVEL=`echo $MYSQL_VERSION | cut -d '.' -f3`
if $UPDATE_MYSQL ; then
if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]] && [[ "$MYSQL_MAIN_VERSION" != "$CURRENT_MAIN_VERSION" ]]; then
warn "Only upgrades within minor versions are supported for MariaDB."
fatal "Upgrade MariaDB from version $CURRENT_VERSION to version $MYSQL_VERSION is NOT possible!"
fi
fi
if [[ "$MYSQL_DISTRIBUTION" = "MySQL" ]]; then
download_base_url="https://dev.mysql.com/get/Downloads/MySQL-${MYSQL_MAIN_VERSION}"
distfile=${MYSQL_DISTRIBUTION,,}-${MYSQL_VERSION}.tar.gz
elif [[ "$MYSQL_DISTRIBUTION" = "Percona" ]] ; then
download_base_url="https://www.percona.com/downloads/Percona-Server-LATEST/Percona-Server-${MYSQL_VERSION}/source/tarball"
distfile="percona-server-${MYSQL_VERSION}.tar.gz"
elif [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]] ; then
#download_base_url="http://ftp.hosteurope.de/mirror/archive.mariadb.org/mariadb-${MYSQL_VERSION}/source"
download_base_url="https://archive.mariadb.org/mariadb-${MYSQL_VERSION}/source/"
distfile=${MYSQL_DISTRIBUTION,,}-${MYSQL_VERSION}.tar.gz
fi
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
if [[ "$MYSQL_DISTRIBUTION" = "MySQL" ]]; then
MYSQL_SRC_DIR=${MYSQL_SRC_BASE_DIR}/mysql-$MYSQL_VERSION
elif [[ "$MYSQL_DISTRIBUTION" = "Percona" ]] ; then
MYSQL_SRC_DIR=${MYSQL_SRC_BASE_DIR}/percona-server-$MYSQL_VERSION
elif [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]] ; then
MYSQL_SRC_DIR=${MYSQL_SRC_BASE_DIR}/mariadb-$MYSQL_VERSION
fi
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_DISTRIBUTION,,}-$MYSQL_VERSION
done
MY_CNF_FILE="${MYSQL_INSTALL_DIR}/etc/my.cnf"
if $UPDATE_MYSQL ; then
echo ""
echononl "Ermittle Installations Verz. der existierenden MySQL Installation."
if [[ "$MYSQL_CUR_DISTRIBUTION" = "MySQL" ]]; then
MYSQL_CUR_INSTALL_DIR="$(dirname "$MYSQL_INSTALL_DIR")/mysql-$CURRENT_VERSION"
elif [[ "$MYSQL_CUR_DISTRIBUTION" = "Percona" ]] ; then
MYSQL_CUR_INSTALL_DIR="$(dirname "$MYSQL_INSTALL_DIR")/percona-$CURRENT_VERSION"
elif [[ "$MYSQL_CUR_DISTRIBUTION" = "MariaDB" ]] ; then
MYSQL_CUR_INSTALL_DIR="$(dirname "$MYSQL_INSTALL_DIR")/mariadb-$CURRENT_VERSION"
fi
if [[ -d "$MYSQL_CUR_INSTALL_DIR" ]]; then
echo_ok
else
echo_failed
fatal "Kann Installations Verz. der z.Zt. installierten Version nicht finden!"
fi
echo ""
fi
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
if $UPDATE_MYSQL ; then
echo ""
if [[ "$MYSQL_CUR_DISTRIBUTION" = "MySQL" ]]; then
MYSQL_CUR_DATA_DIR="$(dirname "$MYSQL_DATA_DIR")/mysql-$CURRENT_VERSION"
elif [[ "$MYSQL_CUR_DISTRIBUTION" = "Percona" ]] ; then
MYSQL_CUR_DATA_DIR="$(dirname "$MYSQL_DATA_DIR")/percona-$CURRENT_VERSION"
elif [[ "$MYSQL_CUR_DISTRIBUTION" = "MariaDB" ]] ; then
MYSQL_CUR_DATA_DIR="$(dirname "$MYSQL_DATA_DIR")/mariadb-$CURRENT_VERSION"
fi
echononl "Ermittle MySQL-Datenbank Verz. der existierenden MySQL Installation."
if [[ -d "$MYSQL_CUR_DATA_DIR" ]]; then
echo_ok
else
echo_failed
fatal "Kann Datenbank Verz. der installierten Version nicht finden!"
fi
echo ""
fi
if $PARALLEL_INSTALLATION ; then
_MYSQL_LOG_DIR="$(dirname "$_MYSQL_LOG_DIR")/${MYSQL_DISTRIBUTION,,}-${MYSQL_VERSION}"
fi
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
_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
if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]]; then
mariadb_groonga_log=${MYSQL_LOG_DIR}/groonga.log
fi
if $PARALLEL_INSTALLATION ; then
declare -i _port=3307
while [[ $_port -lt 3316 ]] ; do
if $(netstat -tlnp | grep mysql | grep -q ":$_port" 2> /dev/null) ; then
((_port++))
continue
else
_MYSQL_PORT=$_port
break
fi
done
if $(netstat -tlnp | grep mysql | grep -q ":$_MYSQL_PORT" 2> /dev/null) ; then
fatal "To many parallel installations"
fi
fi
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
if $PARALLEL_INSTALLATION ; then
_MYSQL_UNIX_SOCKET="/tmp/${MYSQL_DISTRIBUTION,,}-${MYSQL_VERSION}.sock"
fi
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
MYSQL_RUN_DIR="$(dirname "$MYSQL_UNIX_SOCKET")"
# Unix socket file which X Plugin uses for connections.
#
if [[ "${MYSQL_DISTRIBUTION,,}" = 'mysql' ]] && [[ ${MYSQL_MAJOR_VERSION} -ge 8 ]] ; then
BASE_NAME_UNIX_SOCKET="$(basename ${MYSQL_UNIX_SOCKET})"
MYSQL_X_UNIX_SOCKET="$(dirname ${MYSQL_UNIX_SOCKET})/${BASE_NAME_UNIX_SOCKET%.*}x.${BASE_NAME_UNIX_SOCKET##*.}"
MYSQL_X_PORT="${MYSQL_PORT}0"
else
MYSQL_X_UNIX_SOCKET=""
MYSQL_X_PORT=""
fi
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 ""
if ! $UPDATE_MYSQL ; then
echo "Gib ein Passwort für den root user an.."
else
echo "Gib das 'root' Passwort der bestehenden Installation an"
fi
echo ""
_MYSQL_ROOT_PW_1="X"
_MYSQL_ROOT_PW_2="Y"
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
if $UPDATE_MYSQL ; then
if $(pgrep mysqld_safe > /dev/null 2>&1) || $(pgrep mysqld > /dev/null 2>&1); then
if $(mysql --user="root" --password="$_MYSQL_ROOT_PW_1" -N -s -e 'quit' > /dev/null 2>&1) ; then
MYSQL_ROOT_PW=$_MYSQL_ROOT_PW_1
else
echo -e "\n\t\033[33m\033[1mFalsches Passwort\033[m\n"
_MYSQL_ROOT_PW_1=""
fi
else
MYSQL_ROOT_PW=$_MYSQL_ROOT_PW_1
fi
else
MYSQL_ROOT_PW=$_MYSQL_ROOT_PW_1
fi
fi
done
if $PARALLEL_INSTALLATION ; then
SYMLINK_INSTALL_DIR=false
SYMLINK_DATA_DIR=false
fi
if ! $PARALLEL_INSTALLATION ; then
__SYMLINK_INSTALL_DIR=ja
__SYMLINK_DATA_DIR=ja
echo -e "\033[32m--\033[m"
echo ""
echo "Symlinks:"
echo ""
echo " - Setze Sysmlink for das Installationsverzeichnis `dirname $MYSQL_INSTALL_DIR`/mysql"
echo " - Setze Sysmlink for das Datenverzeichnis `dirname $MYSQL_DATA_DIR`/mysql"
echo ""
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
_SYMLINK_INSTALL_DIR="$(echo "$_SYMLINK_INSTALL_DIR" | tr '[:upper:]' '[:lower:]')"
while [ "$_SYMLINK_INSTALL_DIR" != "ja" -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
__SYMLINK_DATA_DIR="$(echo "$_SYMLINK_DATA_DIR" | tr '[:upper:]' '[:lower:]')"
while [ "$_SYMLINK_DATA_DIR" != "ja" -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
fi # if ! $PARALLEL_INSTALLATION ; then
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
VSERVER_GUEST=true
else
VSERVER_GUEST=false
fi
if [[ "$MYSQL_MAJOR_VERSION" -lt 5 ]] \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 5 ]] && [[ "$MYSQL_MINOR_VERSION" -lt 7 ]] ) ; then
INSTALL_SYSTEMD_SERVICE=false
else
if $SYSTEMD_EXISTS ; then
INSTALL_SYSTEMD_SERVICE=""
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Wie soll der MySQL Datenbank Service getsartet werden?"
echo ""
if $PARALLEL_INSTALLATION ; then
echo "[1] SysVinit script ${MYSQL_DISTRIBUTION,,}-${MYSQL_VERSION}.server"
echo -e "[2] \033[37m\033[1mSystemd service ${MYSQL_DISTRIBUTION,,}-${MYSQL_VERSION}.service\033[m"
else
echo "[1] SysVinit script mysql.server"
echo -e "[2] \033[37m\033[1mSystemd service mysqld.service\033[m"
fi
echo ""
echo ""
echo "Type a number or press <RETURN> to choose highlighted value"
echo ""
echononl "Eingabe: "
while [[ "$INSTALL_SYSTEMD_SERVICE" != "true" ]] && [[ "$INSTALL_SYSTEMD_SERVICE" != "false" ]]; do
#while [[ -z "$INSTALL_SYSTEMD_SERVICE" ]];do
read OPTION
case $OPTION in
1) INSTALL_SYSTEMD_SERVICE=false
;;
2) INSTALL_SYSTEMD_SERVICE=true
;;
'') INSTALL_SYSTEMD_SERVICE=true
;;
*) echo ""
echo -e "\tFalsche Eingabe ! [ 1 = Systemd Service ; 2 = SysVinit Script ]"
echo ""
echononl "Eingabe:"
;;
esac
done
else
INSTALL_SYSTEMD_SERVICE=false
fi
fi
MYSQL_SERVICE_FILE=""
MYSQL_SYSV_INIT_SCRIPT=""
SYSTEMD_PID_DIR="$(dirname "$MYSQL_UNIX_SOCKET")"
if $INSTALL_SYSTEMD_SERVICE ; then
if $PARALLEL_INSTALLATION ; then
MYSQL_SERVICE_FILE="${MYSQL_DISTRIBUTION,,}-${MYSQL_VERSION}.service"
SYSTEMD_PID_DIR="$MYSQL_DATA_DIR"
elif [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]]; then
MYSQL_SERVICE_FILE="mariadb.service"
else
MYSQL_SERVICE_FILE="mysqld.service"
SYSTEMD_PID_DIR="$MYSQL_DATA_DIR"
fi
SYSTEMD_ENV_FILE="/etc/systemd/system/${MYSQL_DISTRIBUTION,,}-${MYSQL_VERSION}.env"
else
if $PARALLEL_INSTALLATION ; then
MYSQL_SYSV_INIT_SCRIPT="${MYSQL_DISTRIBUTION,,}-${MYSQL_VERSION}.server"
SUPPORT_FILE_INIT_SCRIPT="mysql.server"
else
MYSQL_SYSV_INIT_SCRIPT="mysql.server"
fi
fi
clear
echo -e "\033[21G\033[32mStarte Installation mit folgenden Parametern:\033[m"
echo ""
if ! $UPDATE_MYSQL ; then
if $PARALLEL_INSTALLATION ; then
echo -e "-- \033[33m\033[1mParallelinstallation\033[m --"
else
echo -e "-- \033[33m\033[1mNeusistallation\033[m --"
fi
else
echo -e "-- \033[33m\033[1mUpdate\033[m (Ersetzen einer vorhandenen Installation) --"
echo ""
echo "Current MySQL Version.....: $CURRENT_VERSION"
echo "Current data dir..........: $MYSQL_CUR_DATA_DIR"
echo "Current installation dir..: $MYSQL_CUR_INSTALL_DIR"
echo ""
fi
echo ""
echo "Linuxdistribution.........: $DISTRIBUTION"
echo ""
echo "MySQL Distribution........: $MYSQL_DISTRIBUTION"
echo "MySQL Versionsnummer......: $MYSQL_VERSION"
echo " MySQL Main Verion.......: $MYSQL_MAIN_VERSION"
echo " MySQL Major Verion......: $MYSQL_MAJOR_VERSION"
echo " MySQL Minor Verion......: $MYSQL_MINOR_VERSION"
echo " MySQL Patch Leveln......: $MYSQL_PATCH_LEVEL"
echo ""
echo "Download base URL.........: $download_base_url"
echo "Download file.............: $distfile"
echo ""
echo "Source Basis Verzeichnis..: $MYSQL_SRC_BASE_DIR"
echo ""
echo "Sourcecodeverzeicnis......: $MYSQL_SRC_DIR"
echo "Installationsverzeichnis..: $MYSQL_INSTALL_DIR"
echo "Default file 'my.cnf'.....: $MY_CNF_FILE"
echo "Datenbankverzeichnis......: $MYSQL_DATA_DIR"
echo "Log Verzeichnis...........: $MYSQL_LOG_DIR"
echo "TCP Port..................: $MYSQL_PORT"
echo "Unix Socket...............: $MYSQL_UNIX_SOCKET"
if [[ -n "$MYSQL_X_UNIX_SOCKET" ]] ; then
echo " Unix Socket (X Plugin)..: $MYSQL_X_UNIX_SOCKET"
echo " TCP Port (X Plugin).....: $MYSQL_X_PORT"
fi
echo "MySQL-User................: $MYSQL_USER"
echo "MySQL-Gruppe..............: $MYSQL_GROUP"
echo ""
echo "Symlink Installationsverz.: $SYMLINK_INSTALL_DIR"
echo "Symlink Datenverzeichnis..: $SYMLINK_DATA_DIR"
echo ""
echo "Systemd Unterstützung.....: $SYSTEMD_EXISTS"
if $INSTALL_SYSTEMD_SERVICE ; then
echo "Starmethode...............: Systemd Service"
echo "MySQL Service File........: $MYSQL_SERVICE_FILE"
echo "MySQL Environment File....: $SYSTEMD_ENV_FILE"
echo "Systemd pid directory.....: $SYSTEMD_PID_DIR"
else
echo "Starmethode...............: SysVinit Script"
echo "MySQL SysyVinit Script....: $MYSQL_SYSV_INIT_SCRIPT"
fi
echo ""
echo "VServer guest system......: $VSERVER_GUEST"
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 https://dev.mysql.com/get/Downloads/MySQL-${MYSQL_MAIN_VERSION}/$distfile 2>/dev/null
#
# if [ "$?" = "0" ]; then
# echo_ok
# else
# echo_failed
# fatal "Downloading $distfile (https://dev.mysql.com/get/Downloads/MySQL-${MYSQL_MAIN_VERSION}/$distfile) Fehlgeschlagen."
# fi
#fi
#
#echo ""
#echo ""
## - Erstelle Logverzeichnis
## -
if [ -d $logdir ]; then
echononl "Verschiebe exitierendes Logverzeichnis ..."
mv "$logdir" "${logdir}.$_backup_date"
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
if $PARALLEL_INSTALLATION ; then
echo "## - Parallelinstallation" >> ${logdir}/main.log
else
echo "## - Neusistallation" >> ${logdir}/main.log
fi
else
echo "## - Update (Ersetzen einer vorhandenen Installation)" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - Current MySQL Version.....: $CURRENT_VERSION" >> ${logdir}/main.log
echo "## - Current installation dir..: $MYSQL_CUR_INSTALL_DIR" >> ${logdir}/main.log
echo "## - Current data dir..........: $MYSQL_CUR_DATA_DIR" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
fi
echo "## -" >> ${logdir}/main.log
echo "## - Linuxdistribution.........: $DISTRIBUTION" >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "## - MySQL Distribution........: $MYSQL_DISTRIBUTION" >> ${logdir}/main.log
echo "## - MySQL Versionsnummer......: $MYSQL_VERSION" >> ${logdir}/main.log
echo "## - MySQL Main Verion.......: $MYSQL_MAIN_VERSION" >> ${logdir}/main.log
echo "## - MySQL Major Verion......: $MYSQL_MAJOR_VERSION" >> ${logdir}/main.log
echo "## - MySQL Minor Verion......: $MYSQL_MINOR_VERSION" >> ${logdir}/main.log
echo "## - MySQL Patch Leveln......: $MYSQL_PATCH_LEVEL" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - Download base URL.........: $download_base_url" >> ${logdir}/main.log
echo "## - Download file.............: $distfile" >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "## - Source Basis Verzeichnis..: $MYSQL_SRC_BASE_DIR" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - Sourcecodeverzeicnis......: $MYSQL_SRC_DIR" >> ${logdir}/main.log
echo "## - Installationsverzeichnis..: $MYSQL_INSTALL_DIR" >> ${logdir}/main.log
echo "## - Default file 'my.cnf'.....: $MY_CNF_FILE" >> ${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
if [[ -n "$MYSQL_X_UNIX_SOCKET" ]] ; then
echo "## - Unix Socket (X Plugin)..: $MYSQL_X_UNIX_SOCKET" >> ${logdir}/main.log
echo "## - TCP Port (X Plugin).....: $MYSQL_X_PORT" >> ${logdir}/main.log
fi
echo "## - MySQL-User................: $MYSQL_USER" >> ${logdir}/main.log
echo "## - MySQL-Gruppe..............: $MYSQL_GROUP" >> ${logdir}/main.log
echo "## - " >> ${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 "## - Systemd Unterstützung.....: $SYSTEMD_EXISTS" >> ${logdir}/main.log
if $INSTALL_SYSTEMD_SERVICE ; then
echo "## - Starmethode...............: Systemd Service" >> ${logdir}/main.log
echo "## - MySQL Service File........: $MYSQL_SERVICE_FILE" >> ${logdir}/main.log
echo "## - MySQL Environment File....: $SYSTEMD_ENV_FILE" >> ${logdir}/main.log
echo "## - Systemd pid directory.....: $SYSTEMD_PID_DIR" >> ${logdir}/main.log
else
echo "## - Starmethode...............: SysVinit Script" >> ${logdir}/main.log
echo "## - MySQL SysyVinit Script....: $MYSQL_SYSV_INIT_SCRIPT" >> ${logdir}/main.log
fi
echo "## -" >> ${logdir}/main.log
echo "## - VServer guest system......: $VSERVER_GUEST" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "UPDATE_MYSQL=$UPDATE_MYSQL" >> ${logdir}/main.log
echo "PARALLEL_INSTALLATION=$PARALLEL_INSTALLATION"
if $UPDATE_MYSQL ; then
echo "CURRENT_VERSION=$CURRENT_VERSION" >> ${logdir}/main.log
echo "MYSQL_CUR_DATA_DIR=$MYSQL_CUR_DATA_DIR" >> ${logdir}/main.log
echo "MYSQL_CUR_INSTALL_DIR=$MYSQL_CUR_INSTALL_DIR" >> ${logdir}/main.log
fi
echo "" >> ${logdir}/main.log
echo "DISTRIBUTION=$DISTRIBUTION" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "MYSQL_DISTRIBUTION=$MYSQL_DISTRIBUTION" >> ${logdir}/main.log
echo "MYSQL_VERSION=$MYSQL_VERSION" >> ${logdir}/main.log
echo "MYSQL_MAIN_VERSION=$MYSQL_MAIN_VERSION" >> ${logdir}/main.log
echo "MYSQL_MAJOR_VERSION=$MYSQL_MAJOR_VERSION" >> ${logdir}/main.log
echo "MYSQL_MINOR_VERSION=$MYSQL_MINOR_VERSION" >> ${logdir}/main.log
echo "MYSQL_PATCH_LEVEL=$MYSQL_PATCH_LEVEL" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "download_base_url=$download_base_url" >> ${logdir}/main.log
echo "distfile=$distfile" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "MYSQL_SRC_BASE_DIR=$MYSQL_SRC_BASE_DIR" >> ${logdir}/main.log
echo "MYSQL_SRC_DIR=$MYSQL_SRC_DIR" >> ${logdir}/main.log
echo "MYSQL_INSTALL_DIR=$MYSQL_INSTALL_DIR" >> ${logdir}/main.log
echo "MY_CNF_FILE=$MY_CNF_FILE" >> ${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
if [[ -n "$MYSQL_X_UNIX_SOCKET" ]] ; then
echo "MYSQL_X_UNIX_SOCKET=$MYSQL_X_UNIX_SOCKET"
echo "MYSQL_X_PORT=$MYSQL_X_PORT"
fi
echo "MYSQL_USER=$MYSQL_USER" >> ${logdir}/main.log
echo "MYSQL_GROUP=$MYSQL_GROUP" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "SYMLINK_INSTALL_DIR=$SYMLINK_INSTALL_DIR" >> ${logdir}/main.log
echo "SYMLINK_DATA_DIR=$SYMLINK_DATA_DIR" >> ${logdir}/main.log
echo "SYSTEMD_EXISTS=$SYSTEMD_EXISTS" >> ${logdir}/main.log
echo "INSTALL_SYSTEMD_SERVICE=$INSTALL_SYSTEMD_SERVICE" >> ${logdir}/main.log
echo "MYSQL_SERVICE_FILE=$MYSQL_SERVICE_FILE" >> ${logdir}/main.log
echo "SYSTEMD_ENV_FILE=$SYSTEMD_ENV_FILE"
echo "SYSTEMD_PID_DIR=$SYSTEMD_PID_DIR" >> ${logdir}/main.log
echo "MYSQL_SYSV_INIT_SCRIPT=$MYSQL_SYSV_INIT_SCRIPT" >> ${logdir}/main.log
echo "VSERVER_GUEST=$VSERVER_GUEST" >> ${logdir}/main.log
echo "_mysql_log=$_mysql_log" >> ${logdir}/main.log
echo "_mysql_error_log=$_mysql_error_log" >> ${logdir}/main.log
echo "_mysql_slow_query_log=$_mysql_slow_query_log" >> ${logdir}/main.log
if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]]; then
echo "mariadb_groonga_log=$mariadb_groonga_log" >> ${logdir}/main.log
fi
if ! $PARALLEL_INSTALLATION ; then
MYSQL_INIT_SCRIPT=""
MYSQLD_SERVICE_FILE=""
if $SYSTEMD_EXISTS ; then
if [[ -f "/etc/systemd/system/$MYSQL_SERVICE_FILE" ]]; then
MYSQLD_SERVICE_FILE="${MYSQL_SERVICE_FILE}"
else
# - Is Service exclusive controlled by systemd
# -
if systemctl -t service list-unit-files \
| grep -e "^mysql" \
| grep -q -E "(enabled|disabled|generated)" 2> /devnull ; then
MYSQLD_SERVICE_FILE=$(systemctl -t service list-unit-files \
| grep -e "^mysql" \
| awk '{print$1}' \
| head -1)
fi
fi
fi
if [[ -f "/etc/systemd/system/$MYSQL_SERVICE_FILE" ]]; then
MYSQL_INIT_SCRIPT="${MYSQL_SYSV_INIT_SCRIPT}"
elif [[ -x "$(realpath /etc/init.d/mysql.server)" ]]; then
MYSQL_INIT_SCRIPT="mysql.server"
elif [[ -x "$(realpath /etc/init.d/mysql)" ]]; then
MYSQL_INIT_SCRIPT="mysql"
fi
if [[ -z "$MYSQL_INIT_SCRIPT" ]] && [[ -z "$MYSQLD_SERVICE_FILE" ]] && $UPDATE_MYSQL ; then
error "Kein start/stop Sevice File/ Init Script gefunden.."
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
fi # if ! $PARALLEL_INSTALLATION ; then
## ---
## - Download sources
## ---
echo ""
echo ""
echo -e "\033[37m\033[1mDownload sources..\033[m"
echo ""
echo "" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
echo "## - Download sources" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
## - Sorcecode Verzeichnis vorhanden?
## -
if [ ! -d ${MYSQL_SRC_BASE_DIR} ] ; then
fatal "Kann MySQL Sourcecode Verzeichnis \"${MYSQL_SRC_BASE_DIR}\" nicht finden."
fi
## - Sorcecode vorhanden?
## -
echononl "Download $distfile .."
if [ ! -f ${MYSQL_SRC_BASE_DIR}/$distfile ] ; then
echo "" >> ${logdir}/main.log
echo "## - Download $distfile .." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "wget -O ${MYSQL_SRC_BASE_DIR}/$distfile ${download_base_url}/$distfile" >> ${logdir}/main.log
wget -O ${MYSQL_SRC_BASE_DIR}/$distfile ${download_base_url}/$distfile 2>/dev/null
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Downloading $distfile (${download_base_url}/$distfile) Fehlgeschlagen."
fi
else
echo_skipped
fi
## -----
## - Doing some pre-installation tasks
## -----
echo ""
echo ""
echo -e "\033[37m\033[1mDoing some pre-installation tasks..\033[m"
echo ""
echo "" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
echo "## - Doing some pre-installation tasks" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
echononl "Adding Group \"$MYSQL_GROUP\".."
if cat /etc/group | grep -e "^${MYSQL_GROUP}:" > /dev/null 2>&1 ; then
echo_skipped
else
echo "" >> ${logdir}/main.log
echo "## - Erstelle Gruppe \"$MYSQL_GROUP\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "groupadd -r $MYSQL_GROUP" >> ${logdir}/main.log
groupadd -r $MYSQL_GROUP >> ${logdir}/main.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
echo "" >> ${logdir}/main.log
echo "## - Erstelle User \"$MYSQL_USER\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "useradd -r -M -d /noexistent -s /bin/false -g $MYSQL_GROUP $MYSQL_USER" >> ${logdir}/main.log
useradd -r -M -d /noexistent -s /bin/false -g $MYSQL_GROUP $MYSQL_USER >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann User \"${MYSQL_USER}\" nicht erstellen..
fi
fi
## - Disable crontab for user root
## -
_crontab_found=false
echononl "Backup crontab"
echo "" >> ${logdir}/main.log
echo "## - Backup crontab" >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "crontab -u root -l > $_CRONTAB_BAKUP_FILE" >> ${logdir}/main.log
crontab -u root -l >> $_CRONTAB_BAKUP_FILE 2>> ${logdir}/main.log
if [ "$?" = "0" ]; then
echo_ok
_crontab_found=true
else
if [[ ! -s "$_CRONTAB_BAKUP_FILE" ]] ; then
echo_skipped
warn "No crontab for user 'root'found."
else
echo_failed
error "Backup crontab failed"
fi
fi
if $_crontab_found ; then
echononl "Disable crontab for user root"
echo "" >> ${logdir}/main.log
echo "## - Disable crontab for user root" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "crontab -r -u root" >> ${logdir}/main.log
crontab -r -u root >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
fi
## - Stop MySQL Service if running
## -
echononl "Stop MySQL Service.."
if $PARALLEL_INSTALLATION || ! $UPDATE_MYSQL; then
echo_skipped
else
_pid_string="${MYSQL_CUR_DISTRIBUTION,,}-${CURRENT_VERSION}/bin/(mysqld_safe |mysqld )"
PIDS="$(ps aux | grep -E "$_pid_string" | grep -v grep | awk '{print$2}')"
if [[ "X${PIDS}X" != "XX" ]];then
echo "" >> ${logdir}/main.log
echo "## - Stop MySQL Service" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
if $SYSTEMD_EXISTS ; then
if [[ -n "$MYSQLD_SERVICE_FILE" ]] ; then
echo "systemctl stop ${MYSQLD_SERVICE_FILE}" >> ${logdir}/main.log
systemctl stop ${MYSQLD_SERVICE_FILE} >> ${logdir}/main.log 2>&1
else
echo "systemctl stop ${MYSQL_INIT_SCRIPT}" >> ${logdir}/main.log
systemctl stop ${MYSQL_INIT_SCRIPT} >> ${logdir}/main.log 2>&1
fi
else
echo "/etc/init.d/$MYSQL_INIT_SCRIPT stop" >> ${logdir}/main.log
/etc/init.d/$MYSQL_INIT_SCRIPT stop >> ${logdir}/main.log 2>&1
fi
sleep 5
PIDS="$(ps aux | grep -E "$_pid_string" | grep -v grep | awk '{print$2}')"
if [[ -z "${PIDS}" ]]; then
echo_ok
else
echo_failed
echononl "Abbruch (kill -9) aller mysqld Prozesse.."
echo "" >> ${logdir}/main.log
echo "## - Abbruch (kill -9) aller mysqld Prozesse" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
declare -i i=0
while [[ -n "$PIDS" ]] ; do
if [[ $i -gt 10 ]]; then
echo_failed
error "Killing remaining MySQL processes failed!"
break
fi
for _PID in $PIDS ; do
echo "kill -9 $_PID" >> ${logdir}/main.log
kill -9 $_PID >> ${logdir}/main.log 2>&1
done
sleep 2
PIDS="$(ps aux | grep -E "(bin/mysqld_safe |bin/mysqld )" | grep -v grep | awk '{print$2}')"
(( i++ ))
done
[[ $i -le 10 ]] && echo_ok
fi
else
echo_skipped
fi
fi # if $PARALLEL_INSTALLATION ; then
## -----
## - Deactivate starting MySQL database service at boot time and
## - cleanup System from SysVinit script and/or Systemd service file
## -----
if ! $PARALLEL_INSTALLATION ; then
if [[ -n "$MYSQL_INIT_SCRIPT" ]] || [[ -n "$MYSQLD_SERVICE_FILE" ]]; then
echo ""
echo ""
echo -e "\033[37m\033[1mDeactivate starting MySQL database service at boot time and"
echo -e "cleanup System from SysVinit script and/or Systemd service file.\033[m"
echo ""
echo "" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
echo "## - Deactivate starting MySQL database service at boot time and" >> ${logdir}/main.log
echo "## - cleanup System from SysVinit script and/or Systemd service file." >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
fi
if [[ -n "$MYSQL_INIT_SCRIPT" ]] ; then
if [[ -f "/etc/init.d/$MYSQL_INIT_SCRIPT" ]]; then
echononl "Entferne existierendes Initskript"
echo "" >> ${logdir}/main.log
echo "## - Entferne existierendes Initskript" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "rm -f /etc/init.d/$MYSQL_INIT_SCRIPT" >> ${logdir}/main.log
rm -f /etc/init.d/$MYSQL_INIT_SCRIPT >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann existierendes Initskript nicht entfernen."
fi
fi
## - Entferne symbolische Links aus den Run Level Verzeichnissen
## -
echononl "Entferne symbolische Links aus den Run Level Verzeichnissen"
echo "" >> ${logdir}/main.log
echo "## - Entferne symbolische Links aus den Run Level Verzeichnissen" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "update-rc.d -f $MYSQL_INIT_SCRIPT remove" >> ${logdir}/main.log
update-rc.d -f $MYSQL_INIT_SCRIPT remove >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann symbolische Links (Run Level Verzeichnisse) nicht entfernen."
fi
fi
if [[ -n "$MYSQLD_SERVICE_FILE" ]]; then
echononl "Deaktiviere Systemd Service \"$MYSQLD_SERVICE_FILE\".."
echo "" >> ${logdir}/main.log
echo "## - Deaktiviere Systemd Service \"$MYSQLD_SERVICE_FILE\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "systemctl disable \"$MYSQLD_SERVICE_FILE\"" >> ${logdir}/main.log
systemctl disable "$MYSQLD_SERVICE_FILE" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Kann Systemd Service \"$MYSQLD_SERVICE_FILE\" nicht deaktivieren!"
fi
echononl "Entferne Systemd Service \"etc/systemd/system/${MYSQLD_SERVICE_FILE}\".."
echo "" >> ${logdir}/main.log
echo "## - Enferne datei \"/etc/systemd/system/${MYSQLD_SERVICE_FILE}\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "rm \"/etc/systemd/system/${MYSQLD_SERVICE_FILE}\"" >> ${logdir}/main.log
rm "/etc/systemd/system/${MYSQLD_SERVICE_FILE}" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Kann existierendes Initskript nicht entfernen."
fi
echononl "Reload Systemd Daemon"
echo "" >> ${logdir}/main.log
echo "## - Reload Systemd Daemon" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "systemctl daemon-reload" >> ${logdir}/main.log
systemctl daemon-reload >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Kann Systemd Daemon nicht reloaden."
fi
fi
fi # if ! $PARALLEL_INSTALLATION ; then
## -----
## - Install needed debian packages
## -----
if ! $UPDATE_MYSQL && ! $PARALLEL_INSTALLATION ; then
echo ""
echo ""
echo -e "\033[37m\033[1mInstall needed debian packages\033[m"
echo ""
echo "" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
echo "## - Install needed debian packages" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
## - 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
[[ "$deb" =~ postfix ]] && continue
INSTALLED_MYSQL_DEB="$INSTALLED_MYSQL_DEB $deb"
done
if [ -n "$INSTALLED_MYSQL_DEB" ]; then
echo "" >> ${logdir}/main.log
echo "## - Deinstalliere Debian MySQL Pakete.." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "DEBIAN_FRONTEND=noninteractive apt-get remove --purge -q -y $INSTALLED_MYSQL_DEB" >> ${logdir}/main.log
DEBIAN_FRONTEND=noninteractive 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 Pakete nicht deinstalieren..
fi
else
echo_skipped
fi
fi
if [ "$DISTRIBUTION" = "Debian" ]; then
echononl "Deinstalliere Debian MariaDB Pakete.."
_INSTALLED_MARIADB_DEB=`dpkg -l | grep mariadb | grep -e "^i" | awk '{print$2}'`
INSTALLED_MARIADB_DEB=
for deb in $_INSTALLED_MARIADB_DEB ; do
INSTALLED_MARIADB_DEB="$INSTALLED_MARIADB_DEB $deb"
done
if [ -n "$INSTALLED_MARIADB_DEB" ]; then
echo "" >> ${logdir}/main.log
echo "## - Deinstalliere Debian MariaDB Pakete.." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "DEBIAN_FRONTEND=noninteractive apt-get remove --purge -q -y $INSTALLED_MARIADB_DEB" >> ${logdir}/main.log
DEBIAN_FRONTEND=noninteractive apt-get remove --purge -q -y $INSTALLED_MARIADB_DEB >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann MariaDB Pakete nicht deinstalieren..
fi
else
echo_skipped
fi
fi
if [ "$DISTRIBUTION" = "Debian" ]; then
echononl "Deinstalliere Debian Percona (MySQL) Pakete.."
_INSTALLED_PERCONA_DEB=`dpkg -l | grep percona | grep -e "^i" | awk '{print$2}'`
INSTALLED_PERCONA_DEB=
for deb in $_INSTALLED_PERCONA_DEB ; do
INSTALLED_PERCONA_DEB="$INSTALLED_PERCONA_DEB $deb"
done
if [ -n "$INSTALLED_MARIADB_DEB" ]; then
echo "" >> ${logdir}/main.log
echo "## - Deinstalliere Debian Percona (MySQL) Pakete.." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "DEBIAN_FRONTEND=noninteractive apt-get remove --purge -q -y $INSTALLED_PERCONA_DEB" >> ${logdir}/main.log
DEBIAN_FRONTEND=noninteractive apt-get remove --purge -q -y $INSTALLED_PERCONA_DEB >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Percona (MySQL) Pakete nicht deinstalieren.."
fi
else
echo_skipped
fi
fi
if [ "$DISTRIBUTION" = "Debian" ]; then
echononl "Run 'apt-get autoremove'.."
echo "" >> ${logdir}/main.log
echo "## - Run 'apt-get autoremove.." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "DEBIAN_FRONTEND=noninteractive apt-get -q -y autoremove" >> ${logdir}/main.log
DEBIAN_FRONTEND=noninteractive apt-get -q -y autoremove >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Running 'apt-get autoremove' failed!"
fi
fi
# - Install Percona apt repository
# -
_failed=false
echononl "Install Percona apt repository .."
if [[ "$MYSQL_DISTRIBUTION" = "Percona" ]] ; then
echo "" >> ${logdir}/main.log
echo "## - Install Percona apt repository .." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "wget -O /tmp/percona-release_0.1-5.$(lsb_release -sc)_all.deb https://repo.percona.com/apt/percona-release_0.1-5.$(lsb_release -sc)_all.deb" >> ${logdir}/main.log
wget -O /tmp/percona-release_0.1-5.$(lsb_release -sc)_all.deb https://repo.percona.com/apt/percona-release_0.1-5.$(lsb_release -sc)_all.deb >> ${logdir}/main.log 2>&1
if [[ $? -ne 0 ]]; then
_failed=true
fi
echo "dpkg -i /tmp/percona-release_0.1-5.$(lsb_release -sc)_all.deb" >> ${logdir}/main.log 2>&1
dpkg -i /tmp/percona-release_0.1-5.$(lsb_release -sc)_all.deb >> ${logdir}/main.log 2>&1
if [[ $? -ne 0 ]]; then
_failed=true
fi
if $_failed ; then
echo_failed
install_additional_debian_packages=false
error "Install Percona apt repository failed!"
else
echo_ok
fi
else
echo_skipped
fi
# if [[ -d /etc/mysql ]]; then
#
# echononl "Sichere/Verschiebe exitierendes Verzeichnis /etc/mysql .."
# echo "" >> ${logdir}/main.log
# echo "## - Sichere/Verschiebe exitierendes Verzeichnis /etc/mysql" >> ${logdir}/main.log
# echo "## -" >> ${logdir}/main.log
# echo "mv /etc/mysql \"/etc/mysql.${_backup_date}\"" >> ${logdir}/main.log
# mv /etc/mysql "/etc/mysql.${_backup_date}" >> ${logdir}/main.log
# if [[ $? -eq 0 ]]; then
# echo_ok
# else
# echo_failed
# fatal "Kann Verzeichnis '/etc/mysql' nicht sichern!"
# fi
#
# fi # if [[ -d /etc/mysql ]]; then
echononl "Update index files of the debian repositories"
echo "" >> ${logdir}/main.log
echo "## - Update index files of the debian repositories" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - See: ${logdir}/apt-install.log" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "apt-get update" >> ${logdir}/main.log
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 "" >> ${logdir}/main.log
echo "## - Installing \"cmake\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - See: ${logdir}/apt-install.log" >> ${logdir}/main.log
echo "DEBIAN_FRONTEND=noninteractive apt-get install -q -y cmake" >> ${logdir}/main.log
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 further debian packages
## -
declare -a deb_package_arr
for _debian_pkg in $_required_debian_packages ; do
deb_package_arr+=("$_debian_pkg")
done
if $install_additional_debian_packages ; then
if [[ "$MYSQL_DISTRIBUTION" = "MySQL" ]] ; then
for _debian_pkg in $_additional_debian_packages_mysql ; do
deb_package_arr+=("$_debian_pkg")
done
fi
if [[ "$MYSQL_DISTRIBUTION" = "Percona" ]] ; then
for _debian_pkg in $_additional_debian_packages_percona ; do
deb_package_arr+=("$_debian_pkg")
done
fi
if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]] ; then
for _debian_pkg in $_additional_debian_packages_mariadb ; do
deb_package_arr+=("$_debian_pkg")
done
fi
fi
# - If postfix is installed, also postfix-mysql should be installed
#
if $(dpkg -l postfix 2> /devnull | grep -q -E "^ii\s+postfix\s+" 2>/dev/null) ; then
if ! $(dpkg -l postfix-mysql 2> /devnull | grep -q -E "^ii\s+postfix-mysql\s+" 2>/dev/null) ; then
deb_package_arr+=("$_debian_pkg")
fi
fi
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}/main.log
echo "## - Installing $_debian_pkg" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - See: ${logdir}/apt-install.log" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "DEBIAN_FRONTEND=noninteractive apt-get install -q -y $_debian_pkg" >> ${logdir}/main.log
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
fatal "Installing debian package \"$_debian_pkg\" failed!"
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
if [[ "$os_dist" = "debian" ]] && [[ $os_version -lt 10 ]] ; then
_mysql_server_pkg="mysql-server"
else
_mysql_server_pkg="default-mysql-server"
fi
## - Install dependency packages for \"mysql-server\"
## -
echononl "Installing dependency packages for \"$_mysql_server_pkg\""
echo "" >> ${logdir}/main.log
echo "## - Installing dependency packages for \"$_mysql_server_pkg\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - See: ${logdir}/apt-install.log" >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "DEBIAN_FRONTEND=noninteractive apt-get -q -y build-dep $_mysql_server_pkg" >> ${logdir}/main.log
echo "" >> ${logdir}/apt-install.log
echo "DEBIAN_FRONTEND=noninteractive apt-get -q -y build-dep $_mysql_server_pkg" >> ${logdir}/apt-install.log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -q -y build-dep $_mysql_server_pkg >> ${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_pkg\" failed!"
fi
if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]] ; then
## - Install dependency packages for \"mariadb-server\"
## -
echononl "Installing dependency packages for \"mariadb-server\""
echo "" >> ${logdir}/main.log
echo "## - Installing dependency packages for \"mariadb-server\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - See: ${logdir}/apt-install.log" >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "DEBIAN_FRONTEND=noninteractive apt-get -q -y build-dep mariadb-server" >> ${logdir}/main.log
echo "" >> ${logdir}/apt-install.log
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
# 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
fi # if ! $UPDATE_MYSQL
## -----
## - Backup directories and files from existing installation
## -----
if $UPDATE_MYSQL ; then
echo ""
echo ""
echo -e "\033[37m\033[1mBackup directories and files from existing installation\033[m"
echo ""
echo "" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
echo "## - Backup directories and files from existing installation" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
if [ -d $MYSQL_DATA_DIR ]; then
echononl "Sichere exitierendes MySQL Datenbank-Verzeichnis ..."
echo "" >> ${logdir}/main.log
echo "## - Sichere exitierendes MySQL Datenbank-Verzeichnis" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "cp -a $MYSQL_DATA_DIR ${MYSQL_DATA_DIR}.${_backup_date}" >> ${logdir}/main.log
cp -a $MYSQL_DATA_DIR ${MYSQL_DATA_DIR}.$_backup_date >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Datenbank-Verzeichnis \"${MYSQL_DATA_DIR}\" nicht verschieben.."
fi
elif [[ -d "$MYSQL_CUR_DATA_DIR" ]] ; then
echononl "Kopiere exitierendes MySQL Datenbank-Verzeichnis ..."
echo "" >> ${logdir}/main.log
echo "## - Kopiere exitierendes MySQL Datenbank-Verzeichnis" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "cp -a \"$MYSQL_CUR_DATA_DIR\" \"$MYSQL_DATA_DIR\"" >> ${logdir}/main.log
cp -a "$MYSQL_CUR_DATA_DIR" "$MYSQL_DATA_DIR" >> ${logdir}/main.log
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kopieren \"$MYSQL_CUR_DATA_DIR\" --> \"${MYSQL_DATA_DIR}\" fehlgeschlagen.."
fi
else
echo_failed
fatal "Exitierendes MySQL Datenbank-Verzeichnis nicht gefunden!"
fi
if [ -d ${MYSQL_INSTALL_DIR} ];then
echononl "Verschiebe exitierendes Installationsverzeichnis ..."
echo "" >> ${logdir}/main.log
echo "## - Verschiebe exitierendes Installationsverzeichnis" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mv $MYSQL_INSTALL_DIR $MYSQL_INSTALL_DIR.${_backup_date}" >> ${logdir}/main.log
mv $MYSQL_INSTALL_DIR $MYSQL_INSTALL_DIR.$_backup_date >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Installationsverzeichnis \"${MYSQL_INSTALL_DIR}\" nicht verschieben..
fi
fi
fi # if $UPDATE_MYSQL
## -----
## - Create needed directories for the new installation
## -----
echo ""
echo ""
echo -e "\033[37m\033[1mCreate needed directories for the new installation\033[m"
echo ""
if ! $UPDATE_MYSQL ; then
if [ -d ${MYSQL_DATA_DIR} ];then
echononl "Verschiebe exitierendes MySQL Datenverzeichnis ..."
echo "" >> ${logdir}/main.log
echo "## - Verschiebe exitierendes MySQL Datenverzeichnis" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mv $MYSQL_DATA_DIR $MYSQL_DATA_DIR.${_backup_date}" >> ${logdir}/main.log
mv $MYSQL_DATA_DIR $MYSQL_DATA_DIR.$_backup_date >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
warn "Something went wrong, because the moved directory should NOT exists at this time.
Maybe you run an fresh new installion but MySQL was already installed. anyway.."
else
echo_failed
fatal Kann MySQL Datenverzeichnis \"${MYSQL_DATA_DIR}\" nicht verschieben..
fi
fi
fi
echo "" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
echo "## - Create needed directories for the new installation" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
echononl "Erstelle Datenbank-Verzeichnis \"$MYSQL_DATA_DIR\".."
echo "" >> ${logdir}/main.log
echo "## - Erstelle Datenbank-Verzeichnis \"$MYSQL_DATA_DIR\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mkdir -p $MYSQL_DATA_DIR" >> ${logdir}/main.log
mkdir -p $MYSQL_DATA_DIR >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Datenbank-Verzeichnis \"${MYSQL_DATA_DIR}\" nicht erstellen..
fi
echononl "Setze Besitzer \"${MYSQL_USER}:${MYSQL_GROUP}\" für Datenbank-Verzeichnis"
echo "" >> ${logdir}/main.log
echo "## - Setze Besitzer \"${MYSQL_USER}:${MYSQL_GROUP}\" für Datenbank-Verzeichnis" >> ${logdir}/main.log
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 Datenbank-Verzeichnis \"${MYSQL_DATA_DIR}\" nicht ändern..
fi
echononl "Setze Verzeichnisrechte \"700\" für Datenbank-Verzeichnis"
echo "" >> ${logdir}/main.log
echo "## - Setze Verzeichnisrechte \"700\" für Datenbank-Verzeichnis" >> ${logdir}/main.log
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 Datenbank-Verzeichnis \"${MYSQL_DATA_DIR}\" nicht ändern..
fi
echononl "Erstelle LOG Verzeichnis \"$MYSQL_LOG_DIR\".."
echo "" >> ${logdir}/main.log
echo "## - Erstelle LOG Verzeichnis \"$MYSQL_LOG_DIR\"" >> ${logdir}/main.log
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
else
echo_failed
fatal Kann LOG Verzeichnis \"${MYSQL_LOG_DIR}\" nicht erstellen..
fi
echononl "Erstelle Error Log Datei '$_mysql_error_log'.."
echo "" >> ${logdir}/main.log
echo "## - Erstelle Error Log Datei '$_mysql_error_log'.." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "touch $_mysql_error_log" >> ${logdir}/main.log
touch "$_mysql_error_log" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann LOG Datei \"${_mysql_error_log}\" nicht erstellen.."
fi
echononl "Setze Besitzer \"${MYSQL_USER}:${MYSQL_GROUP}\" für LOG Verzeichnis"
echo "" >> ${logdir}/main.log
echo "## - Setze Besitzer \"${MYSQL_USER}:${MYSQL_GROUP}\" für LOG Verzeichnis" >> ${logdir}/main.log
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 "## - Setze Verzeichnisrechte \"2750\" für LOG Verzeichnis" >> ${logdir}/main.log
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
echononl "Setze Verzeichnisrechte \"660\" für Error LOG Datei"
echo "" >> ${logdir}/main.log
echo "## - Setze Verzeichnisrechte \"660\" für Error LOG Verzeichnis" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "chmod 660 ${_mysql_error_log}" >> ${logdir}/main.log
chmod 660 ${_mysql_error_log} >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Verzeichnisrechte für Erro LOG Datei \"${_mysql_error_log}\" nicht ändern!"
fi
if [ -d "${MYSQL_SRC_DIR}" ];then
echononl "Verschiebe exitierendes Sourceverzeichnis ..."
echo "" >> ${logdir}/main.log
echo "## - Verschiebe exitierendes Sourceverzeichnis" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mv ${MYSQL_SRC_DIR} ${MYSQL_SRC_DIR}.${_backup_date}" >> ${logdir}/main.log
mv ${MYSQL_SRC_DIR} ${MYSQL_SRC_DIR}.$_backup_date >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Sourceverzeichnis \"${MYSQL_SRC_DIR}\" nicht verschieben..
fi
fi
if $INSTALL_SYSTEMD_SERVICE ; then
if [[ -n "$MYSQL_RUN_DIR" ]] ; then
if [[ ! -d "$MYSQL_RUN_DIR" ]] ; then
echononl "Create Run directory '$MYSQL_RUN_DIR' .."
echo "" >> ${logdir}/main.log
echo "## - Create Run directory '$MYSQL_RUN_DIR'" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mkdir \"$MYSQL_RUN_DIR\"" >> ${logdir}/main.log
mkdir "$MYSQL_RUN_DIR" >> ${logdir}/main.log 2>&1
if [[ $? -eq 0 ]] ; then
echo_ok
else
echo_failed
error "Creating Run directory '$MYSQL_RUN_DIR' failed!"
fi
echononl "Change owner of run directory '$MYSQL_RUN_DIR'"
echo "" >> ${logdir}/main.log
echo "## - Change owner of run directory '$MYSQL_RUN_DIR'" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "chown $MYSQL_USER:${MYSQL_GROUP} \"${MYSQL_RUN_DIR}\"" >> ${logdir}/main.log
chown $MYSQL_USER:${MYSQL_GROUP} ${MYSQL_RUN_DIR} >> ${logdir}/main.log
if [[ $? -eq 0 ]] ; then
echo_ok
else
echo_failed
error "Changing owner of un directory '$MYSQL_RUN_DIR' failed!"
fi
echononl "Force systemd to create run directory on each startup.."
echo "" >> ${logdir}/main.log
echo "## - Force systemd to create run directory on each startup." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - Create '/etc/tmpfiles.d/mysql.conf' with content:" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - # systemd tmpfile settings for mysql or mariadb" >> ${logdir}/main.log
echo "## - d $MYSQL_RUN_DIR 0755 $MYSQL_USER $MYSQL_GROUP -" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "cat << EOF > /etc/tmpfiles.d/mysqld.conf
# systemd tmpfile settings for mysql or mariadb
d $MYSQL_RUN_DIR 0755 $MYSQL_USER $MYSQL_GROUP -
EOF" >> ${logdir}/main.log
cat <<EOF > /etc/tmpfiles.d/mysqld.conf
# systemd tmpfile settings for mysql or mariadb
d $MYSQL_RUN_DIR 0755 $MYSQL_USER $MYSQL_GROUP -
EOF
if [[ $? -eq 0 ]] ; then
echo_ok
else
echo_failed
error "Creating file '/etc/tmpfiles.d/mysqld.conf' failed!"
fi
fi
fi
fi
## -----
## - Basis Installation MySQL
## -----
echo ""
echo ""
echo -e "\033[37m\033[1mBasis Installation $MYSQL_DISTRIBUTION $MYSQL_VERSION\033[m"
echo ""
echo "" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
echo "## - Basis Installation $MYSQL_DISTRIBUTION $MYSQL_VERSION" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
## - This step is redundant and should never bee happend.
## -
if [ -d ${MYSQL_INSTALL_DIR} ];then
echononl "Verschiebe exitierendes Installationsverzeichnis ..."
echo "" >> ${logdir}/main.log
echo "## - Verschiebe exitierendes Installationsverzeichnis" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mv $MYSQL_INSTALL_DIR $MYSQL_INSTALL_DIR.${_backup_date}" >> ${logdir}/main.log
mv $MYSQL_INSTALL_DIR $MYSQL_INSTALL_DIR.$_backup_date >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
warn "Something went wrong, because the moved directory should NOT exists at this time.
Maybe you run an fresh new installion but MySQL was already installed. anyway.."
else
echo_failed
fatal Kann Installationsverzeichnis \"${MYSQL_INSTALL_DIR}\" nicht verschieben..
fi
fi
echononl "Entpacke $distfile ..."
echo_wait
echo "" >> ${logdir}/main.log
echo "## - Entpacke $distfile" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "gunzip < \"${MYSQL_SRC_BASE_DIR}/$distfile\" | tar -C \"$MYSQL_SRC_BASE_DIR\" -xf -" >> ${logdir}/main.log
gunzip < "${MYSQL_SRC_BASE_DIR}/$distfile" | tar -C "$MYSQL_SRC_BASE_DIR" -xf -
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann MySQL Sourcearchiv \"${distfile}\" nicht entpacken..
fi
echononl "Erstelle Verzeichnis für 'Out-of source build'.."
mkdir "${MYSQL_SRC_DIR}/build-${_backup_date}" >> ${logdir}/main.log
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal Kann Verzeichnis \"build-${_backup_date}\" nicht erstellen..
fi
echononl "Wechsle in das Verzeichnis '${MYSQL_SRC_DIR}/build-${_backup_date}'.."
echo "" >> ${logdir}/main.log
echo "## - Wechsle in das Verzeichnis '${MYSQL_SRC_DIR}/build-${_backup_date}'" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "cd ${MYSQL_SRC_DIR}" >> ${logdir}/main.log
cd "${MYSQL_SRC_DIR}/build-${_backup_date}" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann nicht in das Sourceverzeicnis '${MYSQL_SRC_DIR}/build-${_backup_date}' wechseln!"
fi
# Prevent cmake from downloading 'boost' archive, if it is already
# present.
#
# if cmake finds the apropriate 'boost' archive in the installation directory
# cmake wil take this one.
#
if [[ "${MYSQL_DISTRIBUTION,,}" = "mysql" ]] ; then
BOOST_ARCHIV="$(grep "SET(BOOST_PACKAGE_NAME" ${MYSQL_SRC_DIR}/cmake/boost.cmake \
| grep -o -w -E "boost_[0-9]{1,2}_[0-9]{1,2}_[0-9]{1,2}").tar.gz"
BOOST_VERSION="$(echo $BOOST_ARCHIV | grep -o -E "[0-9]{1,2}_[0-9]{1,2}_[0-9]{1,2}" | tr "_" "\." )"
if [[ -f "${MYSQL_SRC_BASE_DIR}/$BOOST_ARCHIV" ]] ; then
echononl "Erstelle Installations Verzeichnis '$(basename $MYSQL_INSTALL_DIR)'.."
echo "" >> ${logdir}/main.log
echo "## - Erstelle Installations Verzeichnis '$(basename $MYSQL_INSTALL_DIR)'" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mkdir $MYSQL_INSTALL_DIR" >> ${logdir}/main.log
mkdir "$MYSQL_INSTALL_DIR" >> ${logdir}/main.log 2>&1
if [[ $? -ne 0 ]] ; then
echo_failed
error Erstellen des Installations Verzeichnisses $MYSQL_INSTALL_DIR ist fehlgeschlagen..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
else
echo_ok
fi
echononl "Kopiere '$BOOST_ARCHIV' nach '$(basename $MYSQL_INSTALL_DIR)'.."
echo "" >> ${logdir}/main.log
echo "## - Kopiere '$BOOST_ARCHIV' nach '$(basename $MYSQL_INSTALL_DIR)'.." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "cp \"${MYSQL_SRC_BASE_DIR}/$BOOST_ARCHIV\" \"$MYSQL_INSTALL_DIR)\"" >> ${logdir}/main.log
cp "${MYSQL_SRC_BASE_DIR}/$BOOST_ARCHIV" "$MYSQL_INSTALL_DIR" >> ${logdir}/main.log 2>&1
if [[ $? -ne 0 ]] ; then
echo_failed
error "Kann '$BOOST_ARCHIV' nicht in das Installations Verzeichniss '$MYSQL_INSTALL_DIR' kopieren.."
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
else
echo_ok
fi
fi
fi
# - Erstelle Optionen für 'cmake'
# -
# ---
# - MySQL / Percona
# ---
# - Note:
# -
# - Since MySQL v 5.7.16 the default 'secure_file_priv' value has changed
# -
# - NULL (>= MySQL 5.7.16), empty (< MySQL 5.7.16)
# -
# - We change the default to empty ("") with -D INSTALL_SECURE_FILE_PRIVDIR="" option
# -
# ---
# - MariaDB
# ---
# -
# - NOT supported (in contrast to original MySQL)
# -
# - -DINSTALL_SECURE_FILE_PRIVDIR=\"\"
# - -DDOWNLOAD_BOOST=1
# - -DWITH_BOOST=$MYSQL_INSTALL_DIR
# -
# - -DSYSTEMD_PID_DIR=$SYSTEMD_PID_DIR"
# -
# -
# - Options enabled (not availabe at original MySQL)
# -
# - configured exactly as the binary releases from MariaDB
# - -DBUILD_CONFIG=mysql_release
# - creates libmysql* symbolic links:
# - -CONC_WITH_MYSQLCOMPAT=ON
# - groonga log file path
# - -GRN_LOG_PATH=${MYSQL_LOG_DIR}/groonga.log
# -
# -
# - To get a complete list of available options, type
# - shell> cmake . -LH | tee ~/mysql_cmake_options.txt
# -
echononl "Erstelle Optionen für 'cmake'"
echo "" >> ${logdir}/main.log
echo "## - Erstelle Optionen für 'cmake'" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]]; then
cmake_options="
..
-DBUILD_CONFIG=mysql_release
-DCMAKE_INSTALL_PREFIX=$MYSQL_INSTALL_DIR
-DMYSQL_DATADIR=$MYSQL_DATA_DIR
-DMYSQL_UNIX_ADDR=$MYSQL_UNIX_SOCKET
-DENABLED_LOCAL_INFILE=ON
-DGRN_LOG_PATH=$mariadb_groonga_log
-DCONC_WITH_MYSQLCOMPAT=ON
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_SSL=/usr/local/openssl-1.1.1"
if $INSTALL_SYSTEMD_SERVICE ; then
cmake_options="$cmake_options
-DWITH_SYSTEMD=yes"
fi
# Fix error: static jemalloc_pic.a can only be used up to jemalloc 4
#
if [[ "$os_dist" = "debian" ]] && [[ $os_version -gt 9 ]] ; then
cmake_options="$cmake_options
-DWITH_JEMALLOC=OFF"
fi
else
cmake_options="
..
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DBUILD_CONFIG=mysql_release
-DCMAKE_INSTALL_PREFIX=$MYSQL_INSTALL_DIR
-DMYSQL_DATADIR=$MYSQL_DATA_DIR
-DMYSQL_UNIX_ADDR=$MYSQL_UNIX_SOCKET
-DINSTALL_SECURE_FILE_PRIVDIR=\"\"
-DENABLED_LOCAL_INFILE=1
-DDOWNLOAD_BOOST=1
-DWITH_BOOST=$MYSQL_INSTALL_DIR
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_SSL=/usr/local/openssl-1.1.1
"
if $INSTALL_SYSTEMD_SERVICE ; then
cmake_options="$cmake_options -DWITH_SYSTEMD=1
-DSYSTEMD_PID_DIR=$SYSTEMD_PID_DIR"
fi
fi
echo "cmake_options=\"$cmake_options\"" >> ${logdir}/main.log
echo_ok
echononl "Konfiguriere MySQL (cmake).."
echo_wait
echo "" >> ${logdir}/main.log
echo "# - Konfiguriere MySQL (cmake).." >> ${logdir}/main.log
echo "# -" >> ${logdir}/main.log
echo "# - See ${logdir}/cmake-conf.log" >> ${logdir}/main.log
echo "# -" >> ${logdir}/main.log
echo "cmake \$cmake_options " >> ${logdir}/main.log
cmake $cmake_options > ${logdir}/cmake-conf.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
if [[ "${MYSQL_DISTRIBUTION,,}" = "mysql" ]] \
&& $(grep "\-\- Download failed" ${logdir}/cmake-conf.log > /dev/null 2>&1) ; then
error "It seems downloading $BOOST_ARCHIV failed."
echononl "Try to download '$BOOST_ARCHIV' directly.."
echo "" >> ${logdir}/main.log
echo "# - Try to download '$BOOST_ARCHIV' directly.." >> ${logdir}/main.log
echo "# -" >> ${logdir}/main.log
echo "wget -O \"${MYSQL_SRC_BASE_DIR}/$BOOST_ARCHIV\" \\" >> ${logdir}/main.log
echo " https://sourceforge.net/projects/boost/files/boost/${BOOST_VERSION}/${BOOST_ARCHIV}" >> ${logdir}/main.log
wget -O "${MYSQL_SRC_BASE_DIR}/$BOOST_ARCHIV" \
https://sourceforge.net/projects/boost/files/boost/${BOOST_VERSION}/${BOOST_ARCHIV} >> ${logdir}/main.log 2>&1
if [[ $? -eq 0 ]]; then
echo_ok
echononl "Erstelle Installations Verzeichnis '$(basename $MYSQL_INSTALL_DIR)'.."
if [[ -d "$MYSQL_INSTALL_DIR" ]]; then
echo_skipped
else
echo "" >> ${logdir}/main.log
echo "## - Erstelle Installations Verzeichnis '$(basename $MYSQL_INSTALL_DIR)'" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mkdir $MYSQL_INSTALL_DIR" >> ${logdir}/main.log
mkdir "$MYSQL_INSTALL_DIR" >> ${logdir}/main.log 2>&1
if [[ $? -ne 0 ]] ; then
echo_failed
error Erstellen des Installations Verzeichnisses $MYSQL_INSTALL_DIR ist fehlgeschlagen..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
else
echo_ok
fi
fi
echononl "Kopiere '$BOOST_ARCHIV' nach '$(basename $MYSQL_INSTALL_DIR)'.."
echo "" >> ${logdir}/main.log
echo "## - Kopiere '$BOOST_ARCHIV' nach '$(basename $MYSQL_INSTALL_DIR)'.." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "cp \"${MYSQL_SRC_BASE_DIR}/$BOOST_ARCHIV\" \"$MYSQL_INSTALL_DIR)\"" >> ${logdir}/main.log
cp "${MYSQL_SRC_BASE_DIR}/$BOOST_ARCHIV" "$MYSQL_INSTALL_DIR" >> ${logdir}/main.log 2>&1
if [[ $? -ne 0 ]] ; then
echo_failed
error "Kann '$BOOST_ARCHIV' nicht in das Installations Verzeichniss '$MYSQL_INSTALL_DIR' kopieren.."
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
else
echo_ok
fi
echononl "Nochmal: konfiguriere MySQL (cmake).."
echo_wait
echo "" >> ${logdir}/main.log
echo "# - Nochml: konfiguriere MySQL (cmake).." >> ${logdir}/main.log
echo "# -" >> ${logdir}/main.log
echo "# - See ${logdir}/cmake-conf.log" >> ${logdir}/main.log
echo "# -" >> ${logdir}/main.log
echo "cmake \$cmake_options " >> ${logdir}/main.log
cmake $cmake_options > ${logdir}/cmake-conf.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
echo ""
else
echo_failed
rm -rf "${MYSQL_SRC_BASE_DIR}/$BOOST_ARCHIV"
fatal Konfiguration erneut fehlgeschlagen. Siehe ${logdir}/cmake-conf.log ..
fi
else
echo_failed
fatal "Downloading '$BOOST_ARCHIV' directly failed"
fi
else
fatal Konfiguration fehlgeschlagen. Siehe ${logdir}/cmake-conf.log ..
fi
fi
echononl "Kompiliere MySQL.."
echo_wait
echo "" >> ${logdir}/main.log
echo "## - Kompiliere MySQL" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - See: ${logdir}/make.log" >> ${logdir}/main.log
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
echononl "Installiere MySQL.."
echo_wait
echo "" >> ${logdir}/main.log
echo "## - Installiere MySQL" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - See: ${logdir}/make_install.log" >> ${logdir}/main.log
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
## -----
## - Einbinden der MySQL Installation in das System
## -----
echo ""
echo ""
echo -e "\033[37m\033[1mEinbinden der $MYSQL_DISTRIBUTION $MYSQL_VERSION Installation in das System\033[m"
echo ""
echo "" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
echo "## - Einbinden der $MYSQL_DISTRIBUTION $MYSQL_VERSION Installation in das System" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
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 "## - Konfiguriere Manpages" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - Fuege folgend Zeilen am Ende der Datei \"/etc/manpath.config\" hinzu:" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - MANDATORY_MANPATH /usr/local/mysql/man /var/cache/man" >> ${logdir}/main.log
echo "## - MANPATH_MAP /usr/local/mysql/bin /usr/local/mysql/man" >> ${logdir}/main.log
echo "## - MANPATH_MAP /usr/local/mysql/bin /usr/local/mysql/man" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
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 "## - Konfiguriere Manpages" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - Fuege folgend Zeilen am Ende der Datei \"/etc/man.conf\" hinzu:" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## - MANPATH /opt/mysql/man /var/cache/man" >> ${logdir}/main.log
echo "## - MANPATH_MAP /opt/mysql/bin /opt/apache2/man" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
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
## - Symlink Installationsverzeichnis (i.d.R. /usr/local/mysql)
## -
if $SYMLINK_INSTALL_DIR ; then
echononl "Entferne vorhandenen Symlink `dirname $MYSQL_INSTALL_DIR`/mysql.."
if [[ -h "$(dirname $MYSQL_INSTALL_DIR)/mysql" ]]; then
echo "" >> ${logdir}/main.log
echo "## - Entferne vorhandenen Symlink `dirname $MYSQL_INSTALL_DIR`/mysql" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "rm \"$(dirname $MYSQL_INSTALL_DIR)/mysql\"" >> ${logdir}/main.log
rm "$(dirname $MYSQL_INSTALL_DIR)/mysql" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Kann Symlink `dirname $MYSQL_INSTALL_DIR`/mysql nicht entfernen..
fi
else
echo_skipped
fi
echononl "Verschiebe Verzeichnis '$(dirname $MYSQL_INSTALL_DIR)/mysql' ..."
if [ -d "$(dirname $MYSQL_INSTALL_DIR)/mysql" ]; then
echo "" >> ${logdir}/main.log
echo "## - Verschiebe Verzeichnis '$(dirname $MYSQL_INSTALL_DIR)/mysql'" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mv \"$(dirname $MYSQL_INSTALL_DIR)/mysql)\" \"$(dirname $MYSQL_INSTALL_DIR)/mysql.$(date +"%Y%m%d-%H%M")" \
>> ${logdir}/main.log
mv "$(dirname $MYSQL_INSTALL_DIR)/mysql" "$(dirname $MYSQL_INSTALL_DIR)/mysql.$(date +"%Y%m%d-%H%M")" \
>> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Kann Installationsverzeichnis \"${MYSQL_INSTALL_DIR}\" nicht verschieben..
fi
else
echo_skipped
fi
echononl "Erstelle Symlink $(dirname $MYSQL_INSTALL_DIR)/mysql --> $MYSQL_INSTALL_DIR"
echo "" >> ${logdir}/main.log
echo "## - Erstelle Symlink $(dirname $MYSQL_INSTALL_DIR)/mysql --> $MYSQL_INSTALL_DIR" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "ln -s \"$(basename $MYSQL_INSTALL_DIR)\" \"$(dirname $MYSQL_INSTALL_DIR)/mysql\"" >> ${logdir}/main.log
ln -s "$(basename $MYSQL_INSTALL_DIR)" "$(dirname $MYSQL_INSTALL_DIR)/mysql" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Kann Symlink `basename $MYSQL_INSTALL_DIR` --> `dirname $MYSQL_INSTALL_DIR`/mysql nicht erstellen ..
fi
fi
## - Symlink Datenverzeichnis
## -
if $SYMLINK_DATA_DIR ; then
if [ -h "$(dirname $MYSQL_DATA_DIR)/mysql" ]; then
echononl "Entferne vorhandenen Symlink '$(dirname $MYSQL_DATA_DIR)/mysql'.."
echo "" >> ${logdir}/main.log
echo "## - Entferne vorhandenen Symlink '$(dirname $MYSQL_DATA_DIR)/mysql'" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "rm $(dirname $MYSQL_DATA_DIR)/mysql" >> ${logdir}/main.log
rm $(dirname $MYSQL_DATA_DIR)/mysql >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Kann Symlink `dirname $MYSQL_DATA_DIR`/mysql nicht entfernen..
fi
fi
if [ -d "$(dirname $MYSQL_DATA_DIR)/mysql" ]; then
echononl "Verschiebe Verzeichnis '$(dirname $MYSQL_DATA_DIR)/mysql' ..."
echo "" >> ${logdir}/main.log
echo "## - Verschiebe Verzeichnis '$(dirname $MYSQL_DATA_DIR)/mysql'" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mv \"$(dirname $MYSQL_DATA_DIR)/mysql\" \"$(dirname $MYSQL_DATA_DIR)/mysql.$(date +"%Y%m%d-%H%M")" \
>> ${logdir}/main.log
mv "$(dirname $MYSQL_DATA_DIR)/mysql" "$(dirname $MYSQL_DATA_DIR)/mysql.$(date +"%Y%m%d-%H%M")" \
>> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Kann Datenverzeichnis \"${MYSQL_DATA_DIR}\" nicht verschieben..
fi
fi
echononl "Erstelle Symlink `dirname $MYSQL_DATA_DIR`/mysql --> $MYSQL_DATA_DIR"
echo "" >> ${logdir}/main.log
echo "## - Erstelle Symlink `dirname $MYSQL_DATA_DIR`/mysql --> $MYSQL_DATA_DIR" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "ln -s \"$(basename $MYSQL_DATA_DIR)\" \"$(dirname $MYSQL_DATA_DIR)/mysql\"" >> ${logdir}/main.log
ln -s "$(basename $MYSQL_DATA_DIR)" "$(dirname $MYSQL_DATA_DIR)/mysql" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Kann Symlink $(basename $MYSQL_DATA_DIR) --> $(dirname $MYSQL_DATA_DIR)/mysql nicht erstellen .."
fi
fi
_checkdir="$(dirname "$MYSQL_INSTALL_DIR")/mysql/bin"
echononl "Füge '$_checkdir' zur PATH Variable hinzu .."
if [ -f /etc/profile ]; then
if ! grep -e "$_checkdir" /etc/profile > /dev/null 2<&1 ; then
echo "" >> ${logdir}/main.log
echo "## - Füge `dirname $MYSQL_INSTALL_DIR`/mysql/bin zur PATH Variable hinzu" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s#^([ ]*export[ ]*PATH.*$)#check_dir=\$_checkdir\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=$_checkdir\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 $_checkdir >> ${logdir}/main.log 2>&1 ; then
export PATH=${_checkdir}:$PATH
fi
else
echo_skipped
fi
else
echo_skipped
fi
## -----
## - Konfiguration ( Teil 1) MySQL Installation
## -----
echo ""
echo ""
echo -e "\033[37m\033[1mKonfiguration (Teil 1) der $MYSQL_DISTRIBUTION $MYSQL_VERSION Installation\033[m"
echo ""
echo "" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
echo "## - Konfiguration (Teil 1) der $MYSQL_DISTRIBUTION $MYSQL_VERSION Installation" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
echononl "Erstelle Konfigurationsdatei /etc/ld.so.conf.d/mysql.conf.."
echo "" >> ${logdir}/main.log
echo "## - Erstelle Konfigurationsdatei /etc/ld.so.conf.d/mysql.conf" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "cat << EOF >/etc/ld.so.conf.d/mysql.conf
`dirname $MYSQL_INSTALL_DIR`/mysql/lib
EOF" >> ${logdir}/main.log
cat << EOF >/etc/ld.so.conf.d/mysql.conf
`dirname $MYSQL_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 "## - Erstelle symbolische Links auf Libraries (ldconfig)" >> ${logdir}/main.log
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
echo
echononl "Richte $MYSQL_DISTRIBUTION Systemtabellen ein.."
if ! $UPDATE_MYSQL ; then
cd $MYSQL_INSTALL_DIR
echo "" >> ${logdir}/main.log
if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]] \
|| ( [[ "$MYSQL_DISTRIBUTION" = "MySQL" ]] \
&& [[ $MYSQL_MAJOR_VERSION -eq 5 ]] \
&& [[ $MYSQL_MINOR_VERSION -le 6 ]] ); then
echo "## - Richte $MYSQL_DISTRIBUTION Systemtabellen ein" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/scripts/mysql_install_db \ " >> ${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 " --lc-messages-dir=$MYSQL_INSTALL_DIR/share" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/scripts/mysql_install_db \
--user=$MYSQL_USER \
--basedir=$MYSQL_INSTALL_DIR \
--datadir=$MYSQL_DATA_DIR \
--lc-messages-dir=$MYSQL_INSTALL_DIR/share \
>> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Das Einrichten der $MYSQL_DISTRIBUTION Systemtabellen ist fehlgeschlagen..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
else
echo "## - Richte $MYSQL_DISTRIBUTION Systemtabellen ein" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysqld --initialize-insecure \ " >> ${logdir}/main.log
echo " --user=$MYSQL_USER \ " >> ${logdir}/main.log
echo " --basedir=$MYSQL_INSTALL_DIR \ " >> ${logdir}/main.log
echo " --datadir=$MYSQL_DATA_DIR \ " >> ${logdir}/main.log
echo " --lc-messages-dir=$MYSQL_INSTALL_DIR/share" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysqld --initialize-insecure \
--user=$MYSQL_USER \
--basedir=$MYSQL_INSTALL_DIR \
--datadir=$MYSQL_DATA_DIR \
--lc-messages-dir=$MYSQL_INSTALL_DIR/share \
>> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Das Einrichten der $MYSQL_DISTRIBUTION Systemtabellen ist fehlgeschlagen..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
fi
else
echo_skipped
fi
echononl "Create directory \"etc\".."
cd $MYSQL_INSTALL_DIR
echo "" >> ${logdir}/main.log
echo "## - Create directory \"etc\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "cd $MYSQL_INSTALL_DIR" >> ${logdir}/main.log
echo "mkdir ${MYSQL_INSTALL_DIR}/etc" >> ${logdir}/main.log
mkdir ${MYSQL_INSTALL_DIR}/etc >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
echononl "Change permissions (755) to directory \"etc\".."
echo "" >> ${logdir}/main.log
echo "## - Change permissions (755) to directory \"etc\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "chmod 755 ${MYSQL_INSTALL_DIR}/etc" >> ${logdir}/main.log
chmod 755 ${MYSQL_INSTALL_DIR}/etc >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
echononl "Create directory \"mysql-files\".."
cd $MYSQL_INSTALL_DIR
echo "" >> ${logdir}/main.log
echo "## - Create directory \"mysql-files\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "cd $MYSQL_INSTALL_DIR" >> ${logdir}/main.log
echo "mkdir ${MYSQL_INSTALL_DIR}/mysql-files" >> ${logdir}/main.log
mkdir ${MYSQL_INSTALL_DIR}/mysql-files >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
echononl "Change permissions (770) to directory \"mysql-files\".."
echo "" >> ${logdir}/main.log
echo "## - Change permissions (770) to directory \"mysql-files\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "chmod 770 ${MYSQL_INSTALL_DIR}/mysql-files" >> ${logdir}/main.log
chmod 770 ${MYSQL_INSTALL_DIR}/mysql-files >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
echononl "Change owner ($MYSQL_USER) of directory 'mysql-files'.."
echo "" >> ${logdir}/main.log
echo "## - Change owner ($MYSQL_USER) of directory 'mysql-files'" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "chown $MYSQL_USER ${MYSQL_INSTALL_DIR}/mysql-files" >> ${logdir}/main.log
chown $MYSQL_USER ${MYSQL_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.."
if [[ "$MYSQL_MAIN_VERSION" = "5.6" ]] ; then
echo_skipped
else
echo "" >> ${logdir}/main.log
echo "## - Generate MySQL SSL Certificate and RSA Key" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "cd $MYSQL_INSTALL_DIR" >> ${logdir}/main.log
cd $MYSQL_INSTALL_DIR
if [[ -x "${MYSQL_INSTALL_DIR}/bin/mysql_ssl_rsa_setup" ]] ; then
echo "${MYSQL_INSTALL_DIR}/bin/mysql_ssl_rsa_setup --datadir=$MYSQL_DATA_DIR .." >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql_ssl_rsa_setup --datadir=$MYSQL_DATA_DIR >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Generating MySQL SSL Certificate and RSA Key failed"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
else
echo_skipped
warn "Script for generating certificates (mysql_ssl_rsa_setup) is not supported"
fi
fi
echononl "Setze Besitzer/Gruppe für das Datenbankverzeichnis.."
echo "" >> ${logdir}/main.log
echo "## - Setze Besitzer/Gruppe für das Datenbankverzeichnis" >> ${logdir}/main.log
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
error Konnte Besitzer/Gruppe für das Datenbankverzeichnis $MYSQL_DATA_DIR nicht setzen..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
_new_cnf_needed=false
if $UPDATE_MYSQL ; then
_my_cnf_old=
if [[ "$CURRENT_VERSION" = "$MYSQL_VERSION" ]] ; then
if [[ -f "$(realpath ${MYSQL_CUR_INSTALL_DIR}).${_backup_date}/etc/my.cnf" ]]; then
_my_cnf_old="$(realpath ${MYSQL_CUR_INSTALL_DIR}).${_backup_date}/etc/my.cnf"
elif [[ -f "$(realpath ${MYSQL_CUR_INSTALL_DIR}).${_backup_date}/my.cnf" ]]; then
_my_cnf_old="$(realpath ${MYSQL_CUR_INSTALL_DIR}).${_backup_date}/my.cnf"
fi
else
if [[ -f "$(realpath ${MYSQL_CUR_INSTALL_DIR})/etc/my.cnf" ]]; then
_my_cnf_old="$(realpath ${MYSQL_CUR_INSTALL_DIR})/etc/my.cnf"
elif [[ -f "$(realpath ${MYSQL_CUR_INSTALL_DIR})/my.cnf" ]]; then
_my_cnf_old="$(realpath ${MYSQL_CUR_INSTALL_DIR})/my.cnf"
fi
fi
echononl "Copy 'my.cnf from old installation to the new one.."
if [[ -f "$_my_cnf_old" ]] ; then
echo "" >> ${logdir}/main.log
echo "## - Copy 'my.cnf from old installation to the new one" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "cp -a \"$_my_cnf_old\" \"${MY_CNF_FILE}\"" >> ${logdir}/main.log
cp -a "$_my_cnf_old" "${MY_CNF_FILE}" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
_new_cnf_needed=true
error "Konnte Konfigurationsdatei 'my.cnf' nicht vom alten in das neue Installations Verz.kopieren.."
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
else
echo_skipped
fi
if [[ ! -f "$MY_CNF_FILE" ]] ; then
_new_cnf_needed=true
else
echononl "Ersetze 'socket' variable in 'my.cnf'.."
if $(grep -q -E "^\s*socket\s*=\s*${MYSQL_UNIX_SOCKET}" "$MY_CNF_FILE" 2> /dev/null) ; then
echo_skipped
else
echo "" >> ${logdir}/main.log
echo "## - Ersetze 'socket' variable in 'my.cnf'.." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s#^(\s*socket\s*=).*#\1 ${MYSQL_UNIX_SOCKET}#\" \"$MY_CNF_FILE\"" >> ${logdir}/main.log
perl -i -n -p -e "s#^(\s*socket\s*=).*#\1 ${MYSQL_UNIX_SOCKET}#" "$MY_CNF_FILE" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Ersetzen von 'socket' variable in 'my.cnf' fehlgeschlagen."
fi
fi
if [[ "$MYSQL_MAJOR_VERSION" -gt 5 ]] \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 5 ]] && [[ "$MYSQL_MINOR_VERSION" -ge 7 ]] ) ; then
proof_var="thread[_-]concurrency"
echononl "Deaktiviere '${proof_var} .."
if grep -q -E "^\s*${proof_var}.*" "$MY_CNF_FILE" 2> /dev/null ; then
echo "" >> ${logdir}/main.log
echo "## - Deaktiviere '${proof_var} .." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s/^(\s*)(${proof_var}.*)/#\1\2/\" \"$MY_CNF_FILE\"" >> ${logdir}/main.log
perl -i -n -p -e "s/^(\s*)(${proof_var}.*)/#\1\2/" "$MY_CNF_FILE" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Konnte '${proof_var}' nicht deaktivieren."
fi
else
echo_skipped
fi
proof_var="innodb[_-]additional[_-]mem[_-]pool[_-]size"
echononl "Deaktiviere '${proof_var} .."
if grep -q -E "^\s*${proof_var}.*" "$MY_CNF_FILE" 2> /dev/null ; then
echo "" >> ${logdir}/main.log
echo "## - Deaktiviere '${proof_var} .." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s/^(\s*)(${proof_var}.*)/#\1\2/\" \"$MY_CNF_FILE\"" >> ${logdir}/main.log
perl -i -n -p -e "s/^(\s*)(${proof_var}.*)/#\1\2/" "$MY_CNF_FILE" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Konnte '${proof_var}' nicht deaktivieren."
fi
else
echo_skipped
fi
fi # if [[ "$MYSQL_MAJOR_VERSION" -lt 5 ]] || ...
if [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \
&& [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then
proof_var="sql[_-]mode"
echononl "Deaktiviere '${proof_var} .."
if grep -q -E "^\s*${proof_var}.*" "$MY_CNF_FILE" 2> /dev/null ; then
echo "" >> ${logdir}/main.log
echo "## - Deaktiviere '${proof_var} .." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s/^(\s*)(${proof_var}.*)/## - Since Version 8.0.11 NO_AUTO_CREATE_USER is no longer available\n## -\n## - For now, we will use the default value, it seems to be ok.\n## -\n#\1\2/\" \"$MY_CNF_FILE\"" >> ${logdir}/main.log
perl -i -n -p -e "s/^(\s*)(${proof_var}.*)/## - Since Version 8.0.11 NO_AUTO_CREATE_USER is no longer available\n## -\n## - For now, we will use the default value, it seems to be ok.\n## -\n#\1\2/" "$MY_CNF_FILE" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Konnte '${proof_var}' nicht deaktivieren."
fi
else
echo_skipped
fi
proof_var="query[_-]cache[_-]limit"
echononl "Deaktiviere '${proof_var} .."
if grep -q -E "^\s*${proof_var}.*" "$MY_CNF_FILE" 2> /dev/null ; then
echo "" >> ${logdir}/main.log
echo "## - Deaktiviere '${proof_var} .." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s/^(\s*)(${proof_var}.*)/## - Removed since Version 8.0.3\n## -\n#\1\2/\" \"$MY_CNF_FILE\"" >> ${logdir}/main.log
perl -i -n -p -e "s/^(\s*)(${proof_var}.*)/## - Removed since Version 8.0.3\n## -\n#\1\2/" "$MY_CNF_FILE" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Konnte '${proof_var}' nicht deaktivieren."
fi
else
echo_skipped
fi
proof_var="query[_-]cache[_-]type"
echononl "Deaktiviere '${proof_var} .."
if grep -q -E "^\s*${proof_var}.*" "$MY_CNF_FILE" 2> /dev/null ; then
echo "" >> ${logdir}/main.log
echo "## - Deaktiviere '${proof_var} .." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s/^(\s*)(${proof_var}.*)/## - Removed since Version 8.0.3\n## -\n#\1\2/\" \"$MY_CNF_FILE\"" >> ${logdir}/main.log
perl -i -n -p -e "s/^(\s*)(${proof_var}.*)/## - Removed since Version 8.0.3\n## -\n#\1\2/" "$MY_CNF_FILE" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Konnte '${proof_var}' nicht deaktivieren."
fi
else
echo_skipped
fi
proof_var="query[_-]cache[_-]min[_-]res[_-]unit"
echononl "Deaktiviere '${proof_var} .."
if grep -q -E "^\s*${proof_var}.*" "$MY_CNF_FILE" 2> /dev/null ; then
echo "" >> ${logdir}/main.log
echo "## - Deaktiviere '${proof_var} .." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s/^(\s*)(${proof_var}.*)/## - Removed since Version 8.0.3\n## -\n#\1\2/\" \"$MY_CNF_FILE\"" >> ${logdir}/main.log
perl -i -n -p -e "s/^(\s*)(${proof_var}.*)/## - Removed since Version 8.0.3\n## -\n#\1\2/" "$MY_CNF_FILE" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Konnte '${proof_var}' nicht deaktivieren."
fi
else
echo_skipped
fi
proof_var="query[_-]cache[_-]size"
echononl "Deaktiviere '${proof_var} .."
if grep -q -E "^\s*${proof_var}.*" "$MY_CNF_FILE" 2> /dev/null ; then
echo "" >> ${logdir}/main.log
echo "## - Deaktiviere '${proof_var} .." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s/^(\s*)(${proof_var}.*)/## -\n## - Removed since Version 8.0.3\n## -\n#\1\2/\" \"$MY_CNF_FILE\"" >> ${logdir}/main.log
perl -i -n -p -e "s/^(\s*)(${proof_var}.*)/## -\n## - Removed since Version 8.0.3\n## -\n#\1\2/" "$MY_CNF_FILE" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Konnte '${proof_var}' nicht deaktivieren."
fi
else
echo_skipped
fi
proof_var="innodb[_-]large[_-]prefix"
echononl "Deaktiviere '${proof_var} .."
if grep -q -E "^\s*${proof_var}.*" "$MY_CNF_FILE" 2> /dev/null ; then
echo "" >> ${logdir}/main.log
echo "## - Deaktiviere '${proof_var} .." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s/^(\s*)(${proof_var}.*)/## -\n## - Removed since Version 8.0.0\n## -\n#\1\2/\" \"$MY_CNF_FILE\"" >> ${logdir}/main.log
perl -i -n -p -e "s/^(\s*)(${proof_var}.*)/## -\n## - Removed since Version 8.0.0\n## -\n#\1\2/" "$MY_CNF_FILE" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Konnte '${proof_var}' nicht deaktivieren."
fi
else
echo_skipped
fi
proof_var="nnodb[_-]file[_-]format"
echononl "Deaktiviere '${proof_var} .."
if grep -q -E "^\s*${proof_var}.*" "$MY_CNF_FILE" 2> /dev/null ; then
echo "" >> ${logdir}/main.log
echo "## - Deaktiviere '${proof_var} .." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s/^(\s*)(${proof_var}.*)/## -\n## - Removed since Version 8.0.0\n## -\n#\1\2/\" \"$MY_CNF_FILE\"" >> ${logdir}/main.log
perl -i -n -p -e "s/^(\s*)(${proof_var}.*)/## -\n## - Removed since Version 8.0.0\n## -\n#\1\2/" "$MY_CNF_FILE" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Konnte '${proof_var}' nicht deaktivieren."
fi
else
echo_skipped
fi
fi # if [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] || ..
fi
fi
if ! $UPDATE_MYSQL || $_new_cnf_needed ; then
echononl "Erstelle Konfigurationsdatei ${MYSQL_INSTALL_DIR}/etc/my.cnf.."
echo "" >> ${logdir}/main.log
echo "## - Erstelle Konfigurationsdatei ${MYSQL_INSTALL_DIR}/etc/my.cnf" >> ${logdir}/main.log
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
echo "cat << EOF > ${MYSQL_INSTALL_DIR}/etc/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
default-character-set = utf8mb4
# 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]
port = $MYSQL_PORT
socket = $MYSQL_UNIX_SOCKET
" >> ${logdir}/main.log
if [[ -n "$MYSQL_X_UNIX_SOCKET" ]] ; then
echo "
mysqlx_port = $MYSQL_X_PORT
mysqlx_socket = $MYSQL_X_UNIX_SOCKET
" >> ${logdir}/main.log
fi
echo "
nice = 0
open-files-limit = $(ulimit -Hn)
innodb-open-files = $(ulimit -Hn)
# The MySQL server
[mysqld]
port = $MYSQL_PORT
socket = $MYSQL_UNIX_SOCKET
" >> ${logdir}/main.log
if [[ -n "$MYSQL_X_UNIX_SOCKET" ]] ; then
echo "
mysqlx_port = $MYSQL_X_PORT
mysqlx_socket = $MYSQL_X_UNIX_SOCKET
" >> ${logdir}/main.log
fi
if [[ -n "$SYSTEMD_PID_DIR" ]] && [[ "$SYSTEMD_PID_DIR" != "/tmp" ]]; then
echo "
pid-file = ${SYSTEMD_PID_DIR}/mysqld.pid
" >> ${logdir}/main.log
fi
echo "
## - character-set-server
## -
## - The servers default character set. If you set this variable, you should also
## - set collation_server to specify the collation for the character set.
## -
## - See also: https://dev.mysql.com/doc/refman/8.0/en/charset-configuration.html
## -
## - The default depend on cmake options:
## -
## - cmake . \
## - ...
## - -DDEFAULT_CHARSET=latin1 \
## - -DDEFAULT_COLLATION=latin1_german1_ci
## -
#character-set-server = utf8
character-set-server = utf8mb4
## - collation-server
## -
## - The server's default collation. See Section 10.14, “Character Set Configuration.
#collation-server = utf8_general_ci
collation-server = utf8mb4_general_ci
" >> ${logdir}/main.log
if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]] ; then
echo "
## - sql_mode
## -
## - The default on MariaDB 10.5 installation is:
## -
## - sql-mode = \"STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"
## -
## - For now, we will use the default value - iIt seems to be ok.
## -
## -
## - Other defaults on MySQL installations:
## -
## - MySQL 8.0
## -
## - Since Version 8.0.11 NO_AUTO_CREATE_USER is no longer available. The default on 8.0 MySQL
## - installations is
## -
## - sql-mode = \"ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION\"
## -
" >> ${logdir}/main.log
elif [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \
&& [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then
echo "
## - sql_mode
## -
## - Since Version 8.0.11 NO_AUTO_CREATE_USER is no longer available. The default on 8.0 MySQL
## - installations is
## -
## - sql-mode = \"ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION\"
## -
## - For now, we will use the default value, without deprecated NO_ZERO_IN_DATE and NO_ZERO_DATE (see below).
## - It seems to be ok.
## -
## -
## - The default on MariaDB 10.5 installation is:
## -
## - sql-mode = \"STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"
" >> ${logdir}/main.log
else
echo "
## - sql_mode
## -
## - To be compartible with older programming on mysql 5.6 use;
## -
## - sql-mode = \"ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"
## -
" >> ${logdir}/main.log
fi
echo "
## -
## - The default on 5.7 MySQL installations was:
## -
## - sql-mode = \"ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"
## -
## -
## - NOTE (note on version 5.7):
## -
## - NO_ZERO_DATE, NO_ZERO_IN_DATE and ERROR_FOR_DIVISION_BY_ZERO are deprecated, and all of them
## - are not part of strict mode, but should be used in conjunction with strict mode and are enabled
## - by default. A warning occurs if NO_ZERO_DATE or NO_ZERO_IN_DATE is enabled without also enabling
## - strict mode or vice versa. For additional discussion, see SQL Mode Changes in MySQL 5.7.
## -
## -
## - Because NO_ZERO_DATE, NO_ZERO_IN_DATE and ERROR_FOR_DIVISION_BY_ZERO are deprecated, expect it to
## - be removed in a future release of MySQL as a separate mode name and its effect included in the effects
## - of strict SQL mode.
## -
" >> ${logdir}/main.log
if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]] ; then
echo "
#sql-mode = \"ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"
" >> ${logdir}/main.log
elif [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \
&& [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then
echo "
sql-mode = \"ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTION\"
" >> ${logdir}/main.log
else
echo "
#sql-mode = \"ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"
sql-mode = \"ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"
" >> ${logdir}/main.log
fi
echo "
## - Which protocols the server permits for encrypted connections. The value is a
## - comma-separated list containing one or more protocol versions. The protocols
## - that can be named for this variable depend on the SSL library used to compile
## - MySQL. Permitted protocols should be chosen such as not to leave 'holes' in the
## - list. For details, see Section 6.3.2, Encrypted Connection TLS Protocols and Ciphers.
## -
## - NOTE:
## - As of MySQL 5.7.35, the TLSv1 and TLSv1.1 connection protocols are deprecated
## - and support for them is subject to removal in a future version of MySQL. See
## - Deprecated TLS Protocols.
## -
tls_version=TLSv1.2,TLSv1.3
## - secure_file_priv
## -
## - This variable is used to limit the effect of data import and export operations,
## - such as those performed by the LOAD DATA and SELECT ... INTO OUTFILE statements
## - and the LOAD_FILE() function. These operations are permitted only to users who
## - have the FILE privilege.
## -
## - i.e.: GRANT FILE on *.* to piwik@localhost
## -
## - secure_file_priv may be set as follows:
## -
## - - If empty, the variable has no effect. (That means no restrictions).
## - This is not a secure setting.
## - - If set to the name of a directory, the server limits import and export
## - operations to work only with files in that directory. The directory
## - must exist; the server will not create it.
## - - If set to NULL, the server disables import and export operations.
## - This value is permitted as of MySQL 5.7.6.
## -
## - Since MySQL v 5.7.16 the default 'secure_file_priv' value has changed
## -
## - NULL (>= MySQL 5.7.16), empty (< MySQL 5.7.16)
## -
## - We use empty (\"\")
## -
## - Note:
## - We changed the default to empty (\"\") while building from source
## - using CMake option (-DINSTALL_SECURE_FILE_PRIVDIR=\"\"). So you can ignore
## - this option.
## -
#secure-file-priv = \"\"
secure-file-priv = \"\"
## - local_infile
## -
## - This variable controls server-side LOCAL capability for LOAD DATA statements.
## - Depending on the local_infile setting, the server refuses or permits local data
## - loading by clients that have LOCAL enabled on the client side.
## -
## - You can check your 'local-infile' setting on mysql prompt:
## -
## - SHOW GLOBAL VARIABLES LIKE 'local_infile';
## -
#local-infile = 1
## - 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: 1 oder ON
## -
skip_external_locking = 1
# 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
## - skip_name_resolve
## -
## - If set to 1 (0 is the default), only IP addresses are used for connections.
## - Host names are not resolved. All host values in the GRANT tables must be
## - IP addresses (or localhost).
## -
## - Default vaue is: 0 oder OFF
## -
#skip_name_resolve = 0
# 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 $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 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 = 1
## - 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 = 4G
## - 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)
## -
## - Note !!
## - innodb_additional_mem_pool_size is deprected since version 5.6.3
## - innodb_additional_mem_pool_size is removed since version 5.7
## -
#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:
## - 50331648 (50M) (MySQL)
## - 100663296 (96MB) (>= MariaDB 10.5)
## - 50331648 (48MB) (<= MariaDB 10.4)
## -
## - (Set .._log_file_size to 25 % of buffer pool size)
## -
#innodb-log-file-size = 100M
#innodb-log-file-size = 256M
innodb_log_file_size = 512M
## - innodb_log_buffer_size
## -
## - The size in bytes of the buffer that InnoDB uses to write to the
## - log files on disk.
## -
## - Default: 16777216 (16M)
## -
#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..
## - ...
## -
## - Default: innodb-flush-log-at-trx-commit = 1
## -
#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
key_buffer_size = 512M
## - 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
max-allowed-packet = 128M
## - 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_open_cache = 6144
table_open_cache = 8192
## - 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
table_definition_cache = 5120
## - 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_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_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.
" >> ${logdir}/main.log
if [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \
&& [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then
echo "
## -
## - Removed since Version 8.0.3
## -
#query_cache_type = 1" >> ${logdir}/main.log
else
echo "query-cache-type = 1" >> ${logdir}/main.log
fi
echo "
## - query_cache_limit
## -
## - Gibt die maximale Größe einzelner Abfrageergebnisse an, die im
## - Cache gespeichert werden können.
## -
## - Vorgeabewert ist 1Mbyte
## -
" >> ${logdir}/main.log
if [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \
&& [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then
echo "
## -
## - Removed since Version 8.0.3
## -
#query-cache-limit = 4M" >> ${logdir}/main.log
else
echo "#query-cache-limit = 4M" >> ${logdir}/main.log
echo "query-cache-limit = 16M" >> ${logdir}/main.log
fi
echo "
## - 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
## -
" >> ${logdir}/main.log
if [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \
&& [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then
echo "
## -
## - Removed since Version 8.0.3
## -
#query-cache-min-res-unit = 8K" >> ${logdir}/main.log
else
echo "query-cache-min-res-unit = 8K" >> ${logdir}/main.log
fi
echo "
## - 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.
## -
" >> ${logdir}/main.log
if [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \
&& [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then
echo "
## -
## - Removed since Version 8.0.3
## -
#query-cache-size = 32M
#query-cache-size = 128M" >> ${logdir}/main.log
else
echo "#query-cache-size = 128M
#query-cache-size = 512M
query-cache-size = 1024M" >> ${logdir}/main.log
fi
echo "
## - 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 = 768K
#join_buffer_size = 1024K
join_buffer_size = 1536K
## - 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
#max_heap_table_size = 128M
#max_heap_table_size = 768M
#max_heap_table_size = 1024M
max_heap_table_size = 2048M
## - 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 = 768M
tmp_table_size = 2048M
# This group is only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]
## - innodb_purge_threads
## -
## - Number of background threads dedicated to InnoDB purge operations. The range
## - is 1 to 32. At least one background thread is always used from MariaDB 10.0.
## -
## - The default has been increased from 1 to 4 in MariaDB 10.2.2. Setting to a
## - value greater than 1 creates that many separate purge threads. This can improve
## - efficiency in some cases, such as when performing DML operations on many tables.
## - In MariaDB 5.5, the options are 0 and 1. If set to 0, the default, purging is
## - done with the primary thread. If set to 1, purging is done on a separate thread,
## - which could reduce contention. See also innodb_purge_batch_size.
## -
## - Default Value:
## -
## - 4 (>= MariaDB 10.2.2)
## - 1 (>=MariaDB 10.0 to <= MariaDB 10.2.1)
#innodb_purge_threads = 4
## -------------
## - 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.
## -
## - Removed since MySQL Version 8.0.3
## -
## - But present at MariaDB
## -
#query_cache_type = 1
query_cache_type = 0
## - query_cache_limit
## -
## - Gibt die maximale Größe einzelner Abfrageergebnisse an, die im
## - Cache gespeichert werden können.
## -
## - Vorgeabewert ist 1Mbyte
## -
## - Removed since MySQL Version 8.0.3
## -
## - But present at MariaDB
## -
#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
## -
## -
## - Removed since MySQL Version 8.0.3
## -
## - But present at MariaDB
## -
#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 1Mbyte, d. h. der Abfrage-Cache ist vorgabeseitig deaktiviert.
## -
## -
## - Removed since MySQL Version 8.0.3
## -
## - But present at MariaDB
## -
#query_cache_size = 128M
#query_cache_size = 512M
query_cache_size = 1024M
## - query cache
## -------------
# This group is only read by MariaDB-10.3 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
[mariadb-10.3]
[mariadb-10.4]
[mariadb-10.6]
## - innodb_read_only_compressed
## -
## - Make ROW_FORMAT=COMPRESSED tables read-only (ON by default)
## -
innodb_read_only_compressed = OFF
## - angepasste Einstellungen
## ------------------------------------------
[mysqldump]
quick
max-allowed-packet = 1024M
default-character-set = utf8mb4
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
local-infile = 1
[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
" >> ${logdir}/main.log
if [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \
&& [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then
echo "
## - sql_mode
## -
## - Since Version 8.0.11 NO_AUTO_CREATE_USER is no longer available
## -
## - For now, we will use the default value, it seems to be ok.
## -
#sql-mode = \"ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"
EOF" >> ${logdir}/main.log
else
echo "
## - sql_mode
## -
## - To be compartible with older programming on mysql 5.6
## -
#sql-mode = "ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
EOF" >> ${logdir}/main.log
fi
cat << EOF > ${MYSQL_INSTALL_DIR}/etc/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
default-character-set = utf8mb4
# 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]
port = $MYSQL_PORT
socket = $MYSQL_UNIX_SOCKET
EOF
if [[ -n "$MYSQL_X_UNIX_SOCKET" ]] ; then
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
mysqlx_port = $MYSQL_X_PORT
mysqlx_socket = $MYSQL_X_UNIX_SOCKET
EOF
fi
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
nice = 0
open-files-limit = $(ulimit -Hn)
innodb-open-files = $(ulimit -Hn)
# The MySQL server
[mysqld]
port = $MYSQL_PORT
socket = $MYSQL_UNIX_SOCKET
EOF
if [[ -n "$MYSQL_X_UNIX_SOCKET" ]] ; then
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
mysqlx_port = $MYSQL_X_PORT
mysqlx_socket = $MYSQL_X_UNIX_SOCKET
EOF
fi
if [[ -n "$SYSTEMD_PID_DIR" ]] && [[ "$SYSTEMD_PID_DIR" != "/tmp" ]]; then
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
pid-file = ${SYSTEMD_PID_DIR}/mysqld.pid
EOF
fi
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
## - character-set-server
## -
## - The servers default character set. If you set this variable, you should also
## - set collation_server to specify the collation for the character set.
## -
## - See also: https://dev.mysql.com/doc/refman/8.0/en/charset-configuration.html
## -
## - The default depend on cmake options:
## -
## - cmake . \
## - ...
## - -DDEFAULT_CHARSET=latin1 \
## - -DDEFAULT_COLLATION=latin1_german1_ci
## -
#character-set-server = utf8
character-set-server = utf8mb4
## - collation-server
## -
## - The server's default collation. See Section 10.14, “Character Set Configuration.
#collation-server = utf8_general_ci
collation-server = utf8mb4_general_ci
EOF
if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]] ; then
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
## - sql_mode
## -
## - The default on MariaDB 10.5 installation is:
## -
## - sql-mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
## -
## - For now, we will use the default value - iIt seems to be ok.
## -
## -
## - Other defaults on MySQL installations:
## -
## - MySQL 8.0
## -
## - Since Version 8.0.11 NO_AUTO_CREATE_USER is no longer available. The default on 8.0 MySQL
## - installations is
## -
## - sql-mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
## -
EOF
elif [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \
&& [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
## - sql_mode
## -
## - Since Version 8.0.11 NO_AUTO_CREATE_USER is no longer available. The default on 8.0 MySQL
## - installations is
## -
## - sql-mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
## -
## - For now, we will use the default value, without deprecated NO_ZERO_IN_DATE and NO_ZERO_DATE (see below).
## - It seems to be ok.
## -
EOF
else
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
## - sql_mode
## -
## - To be compartible with older programming on mysql 5.6 use;
## -
## - sql-mode = "ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
## -
EOF
fi
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
## -
## - The default on 5.7 MySQL installations was:
## -
## - sql-mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
## -
## -
## - NOTE (on 5.7 installation):
## -
## - NO_ZERO_DATE, NO_ZERO_IN_DATE and ERROR_FOR_DIVISION_BY_ZERO are deprecated, and all of them
## - are not part of strict mode, but should be used in conjunction with strict mode and are enabled
## - by default. A warning occurs if NO_ZERO_DATE or NO_ZERO_IN_DATE is enabled without also enabling
## - strict mode or vice versa. For additional discussion, see SQL Mode Changes in MySQL 5.7.
## -
## -
## - Because NO_ZERO_DATE, NO_ZERO_IN_DATE and ERROR_FOR_DIVISION_BY_ZERO are deprecated, expect it to
## - be removed in a future release of MySQL as a separate mode name and its effect included in the effects
## - of strict SQL mode.
## -
EOF
if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]] ; then
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
#sql-mode = "ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
EOF
elif [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \
&& [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
sql-mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
EOF
else
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
#sql-mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
sql-mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
EOF
fi
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
## - Which protocols the server permits for encrypted connections. The value is a
## - comma-separated list containing one or more protocol versions. The protocols
## - that can be named for this variable depend on the SSL library used to compile
## - MySQL. Permitted protocols should be chosen such as not to leave 'holes' in the
## - list. For details, see Section 6.3.2, “Encrypted Connection TLS Protocols and Ciphers.
## -
## - NOTE:
## - As of MySQL 5.7.35, the TLSv1 and TLSv1.1 connection protocols are deprecated
## - and support for them is subject to removal in a future version of MySQL. See
## - Deprecated TLS Protocols.
## -
tls_version=TLSv1.2,TLSv1.3
## - secure-file-priv
## -
## - This variable is used to limit the effect of data import and export operations,
## - such as those performed by the LOAD DATA and SELECT ... INTO OUTFILE statements
## - and the LOAD_FILE() function. These operations are permitted only to users who
## - have the FILE privilege.
## -
## - i.e.: GRANT FILE on *.* to piwik@localhost
## -
## - secure_file_priv may be set as follows:
## -
## - - If empty, the variable has no effect. (That means no restrictions).
## - This is not a secure setting.
## - - If set to the name of a directory, the server limits import and export
## - operations to work only with files in that directory. The directory
## - must exist; the server will not create it.
## - - If set to NULL, the server disables import and export operations.
## - This value is permitted as of MySQL 5.7.6.
## -
## - Since MySQL v 5.7.16 the default 'secure_file_priv' value has changed
## -
## - NULL (>= MySQL 5.7.16), empty (< MySQL 5.7.16)
## -
## - We use empty ("")
## -
## - Note:
## - We changed the default to empty ("") while building from source
## - using CMake option (-DINSTALL_SECURE_FILE_PRIVDIR=""). So you can ignore
## - this option.
## -
#secure-file-priv = ""
secure-file-priv = ""
## - local-infile
## -
## - This variable controls server-side LOCAL capability for LOAD DATA statements.
## - Depending on the local_infile setting, the server refuses or permits local data
## - loading by clients that have LOCAL enabled on the client side.
## -
## - You can check your 'local-infile' setting on mysql prompt:
## -
## - SHOW GLOBAL VARIABLES LIKE 'local_infile';
## -
#local-infile = 1
## - 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 $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 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 = 1
## - 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 = 4G
## - 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)
## -
## - Note !!
## - innodb_additional_mem_pool_size is deprected since version 5.6.3
## - innodb_additional_mem_pool_size is removed since version 5.7
## -
## - innodb_additional_mem_pool_size is also removed on MariaDB 10.3.x
## -
#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_file_size = 512M
## - 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..
## -
## - Default: innodb-flush-log-at-trx-commit = 1
## - ...
## -
#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
key_buffer_size = 512M
## - 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
max-allowed-packet = 128M
## - 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_open_cache = 6144
table_open_cache = 8192
## - 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
table_definition_cache = 5120
## - 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_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_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.
EOF
if [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \
&& [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
## -
## - Removed since MySQL Version 8.0.3
## -
#query_cache_type = 1
EOF
else
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
query_cache_type = 1
EOF
fi
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
## - query_cache_limit
## -
## - Gibt die maximale Größe einzelner Abfrageergebnisse an, die im
## - Cache gespeichert werden können.
## -
## - Vorgeabewert ist 1Mbyte
## -
EOF
if [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \
&& [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
## -
## - Removed since MySQL Version 8.0.3
## -
#query-cache-limit = 4M
EOF
else
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
#query-cache-limit = 4M
query_cache_limit = 16M
EOF
fi
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
## - 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
## -
EOF
if [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \
&& [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
## -
## - Removed since MySQL Version 8.0.3
## -
#query-cache-min-res-unit = 8K
EOF
else
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
query-cache-min-res-unit = 8K
EOF
fi
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
## - 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.
## -
EOF
if [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \
&& [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
## -
## - Removed since MySQL Version 8.0.3
## -
#query-cache-size = 128M
#query_cache_size = 512M
#query_cache_size = 1024M
EOF
else
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
#query-cache-size = 128M
#query_cache_size = 512M
query_cache_size = 1024M
EOF
fi
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
## - 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 = 768K
#join_buffer_size = 1024K
join_buffer_size = 1536K
## - 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
#max_heap_table_size = 128M
#max_heap_table_size = 768M
#max_heap_table_size = 1024M
max_heap_table_size = 2048M
## - 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 = 768M
tmp_table_size = 2048M
## - angepasste Einstellungen
## ------------------------------------------
# This group is only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]
## - innodb_purge_threads
## -
## - Number of background threads dedicated to InnoDB purge operations. The range
## - is 1 to 32. At least one background thread is always used from MariaDB 10.0.
## -
## - The default has been increased from 1 to 4 in MariaDB 10.2.2. Setting to a
## - value greater than 1 creates that many separate purge threads. This can improve
## - efficiency in some cases, such as when performing DML operations on many tables.
## - In MariaDB 5.5, the options are 0 and 1. If set to 0, the default, purging is
## - done with the primary thread. If set to 1, purging is done on a separate thread,
## - which could reduce contention. See also innodb_purge_batch_size.
## -
## - Default Value:
## -
## - 4 (>= MariaDB 10.2.2)
## - 1 (>=MariaDB 10.0 to <= MariaDB 10.2.1)
#innodb_purge_threads = 4
## -------------
## - 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.
## -
## - Removed since MySQL Version 8.0.3
## -
## - But present at MariaDB
## -
#query_cache_type = 1
query_cache_type = 0
## - query_cache_limit
## -
## - Gibt die maximale Größe einzelner Abfrageergebnisse an, die im
## - Cache gespeichert werden können.
## -
## - Vorgeabewert ist 1Mbyte
## -
## - Removed since MySQL Version 8.0.3
## -
## - But present at MariaDB
## -
#query-cache-limit = 4M
query_cache_limit = 128M
## - 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
## -
## -
## - Removed since MySQL Version 8.0.3
## -
## - But present at MariaDB
## -
#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 1Mbyte, d. h. der Abfrage-Cache ist vorgabeseitig deaktiviert.
## -
## -
## - Removed since MySQL Version 8.0.3
## -
## - But present at MariaDB
## -
query_cache_size = 128M
## - query cache
## -------------
# This group is only read by MariaDB-10.3 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
[mariadb-10.3]
[mariadb-10.4]
[mariadb-10.6]
## - innodb_read_only_compressed
## -
## - Make ROW_FORMAT=COMPRESSED tables read-only (ON by default)
## -
innodb_read_only_compressed = OFF
[mysqldump]
quick
max-allowed-packet = 1024M
default-character-set = utf8mb4
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
local-infile = 1
[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 [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \
|| ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \
&& [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
## - sql_mode
## -
## - Since Version 8.0.11 NO_AUTO_CREATE_USER is no longer available
## -
## - For now, we will use the default value, it seems to be ok.
## -
#sql-mode = "ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
EOF
else
cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf
## - sql_mode
## -
## - To be compartible with older programming on mysql 5.6
## -
#sql-mode = "ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
EOF
fi
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Konnte Konfigurationsdatei \"${MYSQL_INSTALL_DIR}/etc/my.cnf\" nicht erstellen..
fi
if [[ -f "${MYSQL_INSTALL_DIR}/my.cnf" ]]; then
echononl "Backup existing file '${MYSQL_INSTALL_DIR}/my.cnf'.."
echo "" >> ${logdir}/main.log
echo "## - Backup existing file '${MYSQL_INSTALL_DIR}/my.cnf'.." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mv \"${MYSQL_INSTALL_DIR}/my.cnf\" \"${MYSQL_INSTALL_DIR}/my.cnf.ORIG\"" >> ${logdir}/main.log
mv "${MYSQL_INSTALL_DIR}/my.cnf" "${MYSQL_INSTALL_DIR}/my.cnf.ORIG" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Kann datei '${MYSQL_INSTALL_DIR}/my.cnf' nicht sichern!"
fi
fi
echononl "Erstelle Symlink ${MYSQL_INSTALL_DIR}/my.cnf --> ${MYSQL_INSTALL_DIR}/etc/my.cnf"
echo "" >> ${logdir}/main.log
echo "## - Erstelle Symlink ${MYSQL_INSTALL_DIR}/my.cnf --> ${MYSQL_INSTALL_DIR}/etc/my.cnf" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "ln -s \"etc/my.cnf\" \"${MYSQL_INSTALL_DIR}/my.cnf\"" >> ${logdir}/main.log
ln -s "etc/my.cnf" "${MYSQL_INSTALL_DIR}/my.cnf" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Kann Symlink ${MYSQL_INSTALL_DIR}/my.cnf --> ${MYSQL_INSTALL_DIR}/etc/my.cnf nicht erstellen!"
fi
fi
if [[ ! -d "/etc/mysql" ]]; then
echononl "Erstelle Verzeichnis '/etc/mysql' .."
echo "" >> ${logdir}/main.log
echo "## - Erstelle Verzeichnis '/etc/mysql' .." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mkdir \"/etc/mysql\"" >> ${logdir}/main.log
mkdir "/etc/mysql" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Konnte Verzeichnis '/etc/mysql' nicht erstellen"
fi
else
if [[ -f "/etc/mysql/my.cnf" ]]; then
echononl "Backup Symlink/Datei '/etc/mysql/my.cnf' .."
echo "" >> ${logdir}/main.log
echo "## - Backup Symlink/Datei '/etc/mysql/my.cnf' .." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mv \"/etc/mysql/my.cnf\" \"/etc/mysql/my.cnf.${_backup_date}\"" >> ${logdir}/main.log
mv "/etc/mysql/my.cnf" "/etc/mysql/my.cnf.${_backup_date}" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Konnte Symlink/Datei '/etc/mysql/my.cnf' nicht sichern."
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
fi
fi
echononl "Add Path '$(dirname "${MYSQL_INSTALL_DIR}")/mysql/etc/my.cnf' for 'my.cnf' using 'update-alternatives'.."
if ! $PARALLEL_INSTALLATION ; then
if $(update-alternatives --list my.cnf 2>/dev/null | grep -q $(dirname "${MYSQL_INSTALL_DIR}")/mysql/etc/my.cnf 2>/dev/null) ; then
echo_skipped
else
echo "" >> ${logdir}/main.log
echo "## - Add Path '$(dirname "${MYSQL_INSTALL_DIR}")/mysql/etc/my.cnf' for 'my.cnf' using 'update-alternatives'.." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "update-alternatives --install /etc/mysql/my.cnf my.cnf $(dirname "${MYSQL_INSTALL_DIR}")/mysql/etc/my.cnf 300" >> ${logdir}/main.log
update-alternatives --install /etc/mysql/my.cnf my.cnf $(dirname "${MYSQL_INSTALL_DIR}")/mysql/etc/my.cnf 1300 >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
echononl "Set link '/etc/alternatives/my.cnf' using 'update-alternatives'..."
echo "" >> ${logdir}/main.log
echo "## - Set link '/etc/alternatives/my.cnf' using 'update-alternatives'..." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "update-alternatives --set my.cnf $(dirname "${MYSQL_INSTALL_DIR}")/mysql/etc/my.cnf" >> ${logdir}/main.log
update-alternatives --set my.cnf $(dirname "${MYSQL_INSTALL_DIR}")/mysql/etc/my.cnf
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Setting link '/etc/alternatives/my.cnf using 'update-alternatives' mechanism failed!"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
else
echo_failed
error "Adding PATH '$(dirname "${MYSQL_INSTALL_DIR}")/mysql/etc/my.cnf' for Link '/etc/alternatives/my.cnf' using 'update-alternatives' mechanism failed!"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
fi
else
echo_skipped
fi # if ! $PARALLEL_INSTALLATION ; then
#echononl "Erstelle Symlink /etc/mysql/my.cnf --> ${MYSQL_INSTALL_DIR}/etc/my.cnf"
#if ! $PARALLEL_INSTALLATION ; then
#
# echo "" >> ${logdir}/main.log
# echo "## - Erstelle Symlink /etc/mysql/my.cnf --> ${MYSQL_INSTALL_DIR}/etc/my.cnf" >> ${logdir}/main.log
# echo "## -" >> ${logdir}/main.log
# echo "ln -s \"$(dirname "${MYSQL_INSTALL_DIR}")/mysql/etc/my.cnf\" \"/etc/mysql/\"" >> ${logdir}/main.log
# ln -s "$(dirname "${MYSQL_INSTALL_DIR}")/mysql/etc/my.cnf" "/etc/mysql/my.cnf" >> ${logdir}/main.log 2>&1
# if [ "$?" = "0" ]; then
# echo_ok
# else
# echo_failed
# error "Konnte Symlink /etc/mysql/my.cnf --> ${MYSQL_INSTALL_DIR}/etc/my.cnf nicht erstellen."
#
# echononl "continue anyway [yes/no]: "
# read OK
# OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
# while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
# echononl "Wrong entry! - repeat [yes/nno]: "
# read OK
# done
# [[ $OK = "yes" ]] || fatal "Abbruch durch User"
# fi
#
#else
# echo_skipped
#fi # if ! $PARALLEL_INSTALLATION ; then
echononl "Kopiere 'stopwords_utf8_iso8859-15.txt' -> ${MYSQL_INSTALL_DIR}.."
if [ -f "${MYSQL_SRC_BASE_DIR}/stopwords_utf8_iso8859-15.txt" ];then
echo "" >> ${logdir}/main.log
echo "## - Kopiere 'stopwords_utf8_iso8859-15.txt' -> ${MYSQL_INSTALL_DIR}" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "cp ${MYSQL_SRC_BASE_DIR}/stopwords_utf8_iso8859-15.txt ${MYSQL_INSTALL_DIR}" >> ${logdir}/main.log
cp ${MYSQL_SRC_BASE_DIR}/stopwords_utf8_iso8859-15.txt ${MYSQL_INSTALL_DIR}
if [ "$?" = "0" ]; then
echo_ok
echononl "Aktiviere Stopword Datei.."
if ! grep -q -E "^\s*ft_stopword_file.*" "${MYSQL_INSTALL_DIR}/etc/my.cnf" 2> /dev/null ; then
echo "" >> ${logdir}/main.log
echo "## - Aktiviere Stopword Datei" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s/^(\s*#\s*)(ft_stopword_file.*)/#\1\2\n\2/\" ${MYSQL_INSTALL_DIR}/etc/my.cnf" >> ${logdir}/main.log
perl -i -n -p -e "s/^(\s*#\s*)(ft_stopword_file.*)/#\1\2\n\2/" ${MYSQL_INSTALL_DIR}/etc/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_skipped
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
if $UPDATE_MYSQL && ! $PARALLEL_INSTALLATION ; then
## -----
## - Stoppe MySQL Datenbank Service
## -----
echo ""
echo ""
echo -e "\033[37m\033[1mStoppe MySQL Datenbank Service\033[m"
echo ""
echo "" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
echo "## - Stoppe MySQL Datenbank Service" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
echononl "Stoppe MySQL Datenbankserver.."
echo "" >> ${logdir}/main.log
echo "## - Stoppe MySQL Datenbankserver" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
if $INSTALL_SYSTEMD_SERVICE ; then
_found_mysql_processes=false
echo "systemctl stop \"$MYSQL_SERVICE_FILE\"" >> ${logdir}/main.log
systemctl stop "$MYSQL_SERVICE_FILE" >> ${logdir}/main.log 2>&1
if [[ $? -eq 0 ]]; then
echo_ok
else
_pid_string="${MYSQL_CUR_DISTRIBUTION,,}-${CURRENT_VERSION}/bin/(mysqld_safe |mysqld )"
PIDS="$(ps aux | grep -E "$_pid_string" | grep -v grep | awk '{print$2}')"
if [[ "X${PIDS}X" != "XX" ]];then
_found_mysql_processes=true
echo_failed
error "Konnte MySQL Datenbankserver nicht stoppen - Some old mysql processs seams to be running\n\n \\033[1mStop MySQL manually ! \033[m"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
_pid_string="${MYSQL_INSTALL_DIR}/bin/(mysqld_safe |mysqld )"
PIDS="$(ps aux | grep -E "$_pid_string" | grep -v grep | awk '{print$2}')"
if [[ "X${PIDS}X" != "XX" ]];then
_found_mysql_processes=true
echo_failed
error "Konnte MySQL Datenbankserver nicht stoppen - Some mysql processs seams to be running\n\n \\033[1mStop MySQL manually ! \033[m"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
if ! $_found_mysql_processes ; then
echo_ok
fi
fi
else
if $SYSTEMD_EXISTS ; then
echo "systemctl stop ${MYSQL_SYSV_INIT_SCRIPT}" >> ${logdir}/main.log
systemctl stop ${MYSQL_SYSV_INIT_SCRIPT} >> ${logdir}/main.log 2>&1
else
echo "/etc/init.d/${MYSQL_SYSV_INIT_SCRIPT} stop" >> ${logdir}/main.log
/etc/init.d/${MYSQL_SYSV_INIT_SCRIPT} stop >> ${logdir}/main.log 2>&1
fi
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Konnte MySQL Datenbankserver nicht stoppen..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
fi
echononl "Sleep for 5 seconds.."
echo_wait
sleep 5
echo_ok
echo ""
fi
if $INSTALL_SYSTEMD_SERVICE ; then
echononl "Kopiere Service File nach '/etc/systemd/system'.."
echo "" >> ${logdir}/main.log
echo "## - Kopiere Service File nach '/etc/systemd/system'" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]]; then
echo "cp \"${MYSQL_INSTALL_DIR}/support-files/systemd/mariadb.service\" /etc/systemd/system/$MYSQL_SERVICE_FILE" >> ${logdir}/main.log
cp "${MYSQL_INSTALL_DIR}/support-files/systemd/mariadb.service" "/etc/systemd/system/$MYSQL_SERVICE_FILE" >> ${logdir}/main.log 2>&1
_retval=$?
else
echo "cp \"${MYSQL_INSTALL_DIR}/lib/systemd/system/mysqld.service\" /etc/systemd/system/$MYSQL_SERVICE_FILE" >> ${logdir}/main.log
cp "${MYSQL_INSTALL_DIR}/lib/systemd/system/mysqld.service" "/etc/systemd/system/$MYSQL_SERVICE_FILE" >> ${logdir}/main.log 2>&1
_retval=$?
fi
if [[ $_retval -eq 0 ]]; then
echo_ok
else
echo_failed
error "Kopieren Service File nach '/etc/systemd/system/${MYSQL_SERVICE_FILE}' failed!"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]]; then
if ! $PARALLEL_INSTALLATION ; then
echononl "Erstelle Verzeichnis '/etc/systemd/system/${MYSQL_SERVICE_FILE}.d'.."
if [[ ! -d "/etc/systemd/system/${MYSQL_SERVICE_FILE}.d" ]] ; then
echo "" >> ${logdir}/main.log
echo "## - Erstelle Verzeichnis '/etc/systemd/system/${MYSQL_SERVICE_FILE}.d'" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mkdir \"/etc/systemd/system/${MYSQL_SERVICE_FILE}.d\"" >> ${logdir}/main.log
mkdir "/etc/systemd/system/${MYSQL_SERVICE_FILE}.d" >> ${logdir}/main.log 2>&1
if [[ $? -eq 0 ]] ; then
echo_ok
else
echo_failed
error "Creating directory '/etc/systemd/system/${MYSQL_SERVICE_FILE}.d' failed!"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
else
echo_skipped
fi
echononl "Erstelle Datei '/etc/systemd/system/${MYSQL_SERVICE_FILE}.d/set-alias.conf'"
echo "" >> ${logdir}/main.log
echo "## - Erstelle Datei '/etc/systemd/system/${MYSQL_SERVICE_FILE}.d/set-alias.conf'" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "cat <<EOF > \"/etc/systemd/system/${MYSQL_SERVICE_FILE}.d/set-alias.conf\"
[Install]
Alias=mysqld.service mysql.service
EOF
" >> ${logdir}/main.log
cat <<EOF > "/etc/systemd/system/${MYSQL_SERVICE_FILE}.d/set-alias.conf"
[Install]
Alias=mysqld.service mysql.service
EOF
if [[ $? -eq 0 ]] ; then
echo_ok
else
echo_failed
error "Creating file '/etc/systemd/system/${MYSQL_SERVICE_FILE}.d/set-alias.conf' failed!"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
fi #if ! $UPDATE_MYSQL && ! $PARALLEL_INSTALLATION ; then
fi # if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]]; then
echononl "Add '--defaults-file=..' to ExecStart command line at systemd service file.."
echo "" >> ${logdir}/main.log
echo "## - Add '--defaults-file=..' to ExecStart command line at systemd service file.." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s&^(\s*ExecStart=[^\s]+)\s+(.*)&\1 --defaults-file=${MYSQL_INSTALL_DIR}/etc/my.cnf \2&\" /etc/systemd/system/$MYSQL_SERVICE_FILE" >> ${logdir}/main.log
perl -i -n -p -e "s&^(\s*ExecStart=[^\s]+)\s+(.*)&\1 --defaults-file=${MYSQL_INSTALL_DIR}/etc/my.cnf \2&" \
/etc/systemd/system/$MYSQL_SERVICE_FILE >> ${logdir}/main.log
if [[ $_retval -eq 0 ]]; then
echo_ok
else
echo_failed
error "Modifiing ExecStart command line at '/etc/systemd/system/${MYSQL_SERVICE_FILE}' failed!"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
echononl "Set open_files_limit (LimitNOFILE) to $(ulimit -Hn) .."
echo "" >> ${logdir}/main.log
echo "## - Set open_files_limit (LimitNOFILE) to $(ulimit -Hn) .." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
if grep -q -E "^\s*LimitNOFILE\s*=" /etc/systemd/system/$MYSQL_SERVICE_FILE ; then
echo "perl -i -n -p -e \"s/^(\s*LimitNOFILE\s*=.*)/#\1\nLimitNOFILE = $(ulimit -Hn)/\" /etc/systemd/system/$MYSQL_SERVICE_FILE" >> ${logdir}/main.log
perl -i -n -p -e "s/^(\s*LimitNOFILE\s*=.*)/#\1\nLimitNOFILE = $(ulimit -Hn)/" \
/etc/systemd/system/$MYSQL_SERVICE_FILE >> ${logdir}/main.log 2>&1
_retval=$?
else
echo "LimitNOFILE = $(ulimit -Hn)" >> /etc/systemd/system/$MYSQL_SERVICE_FILE
_retval=$?
fi
if [ "$_retval" = "0" ]; then
echo_ok
else
echo_failed
error "Setting open_files_limit (LimitNOFILE) to $(ulimit -Hn) failed!"
fi
echononl "Create environmet file '${SYSTEMD_ENV_FILE}' for systemd service.."
echo "" >> ${logdir}/main.log
echo "## - Create environmet file '${SYSTEMD_ENV_FILE}' for systemd service.." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "cat <<EOF > $SYSTEMD_ENV_FILE
MYSQL_HOME=\"$MYSQL_INSTALL_DIR\"
EOF
" >> ${logdir}/main.log
cat <<EOF > $SYSTEMD_ENV_FILE
MYSQL_HOME="$MYSQL_INSTALL_DIR"
EOF
if [[ $? -eq 0 ]] ; then
echo_ok
else
echo_failed
error "Creating environmet file fo systemd service failed!"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
echononl "Add/Replace 'EnvironmentFile' variable at service file .."
echo "" >> ${logdir}/main.log
echo "## - Add/Replace 'EnvironmentFile' variable at service file .." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
if grep -q -E "^\s*EnvironmentFile\s*=" /etc/systemd/system/$MYSQL_SERVICE_FILE ; then
echo "perl -i -n -p -e \"s#^(\s*EnvironmentFile\s*=.*)#\#\1\nEnvironmentFile=-${SYSTEMD_ENV_FILE}#\" /etc/systemd/system/$MYSQL_SERVICE_FILE" >> ${logdir}/main.log
perl -i -n -p -e "s#^(\s*EnvironmentFile\s*=.*)#\#\1\nEnvironmentFile=-${SYSTEMD_ENV_FILE}#" \
/etc/systemd/system/$MYSQL_SERVICE_FILE >> ${logdir}/main.log 2>&1
_retval=$?
else
echo "cat <<EOF >> /etc/systemd/system/$MYSQL_SERVICE_FILE
EnvironmentFile=-$SYSTEMD_ENV_FILE
EOF" >> ${logdir}/main.log 2>&1
cat <<EOF >> /etc/systemd/system/$MYSQL_SERVICE_FILE 2>> ${logdir}/main.log
EnvironmentFile=-$SYSTEMD_ENV_FILE
EOF
_retval=$?
fi
if [ "$_retval" = "0" ]; then
echo_ok
else
echo_failed
error "Adding/Replacing 'EnvironmentFile' variable at service file failed!"
fi
if $PARALLEL_INSTALLATION ; then
if grep -q -E "^\s*Alias\s*=" /etc/systemd/system/$MYSQL_SERVICE_FILE ; then
echononl "Disable 'Alias' directive(s) at service file.."
echo "" >> ${logdir}/main.log
echo "## - Disable 'Alias' directive(s) at service file.." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s/^(\s*Alias\s*=.*)/#\1/\" /etc/systemd/system/$MYSQL_SERVICE_FILE" >> ${logdir}/main.log
perl -i -n -p -e "s/^(\s*Alias\s*=.*)/#\1/" /etc/systemd/system/$MYSQL_SERVICE_FILE >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Disbling 'Alias' directive(s) at service file failed!"
fi
fi
fi # if $PARALLEL_INSTALLATION ; then
echononl "Aktiviere den MySQL Datenbank Service für den automatischem Start.."
echo "" >> ${logdir}/main.log
echo "## - Aktiviere den MySQL Datenban Service für den automatischem Start" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "systemctl enable $MYSQL_SERVICE_FILE" >> ${logdir}/main.log
systemctl enable $MYSQL_SERVICE_FILE >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Aktivieren des MySQL Datenbank Service für den automatischem Start fehgeschalgen!"
fi
echononl "Run 'systemctl daemon-reload' to reload units."
echo "" >> ${logdir}/main.log
echo "## - Run 'systemctl daemon-reload' to reload units." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "systemctl daemon-reload" >> ${logdir}/main.log
systemctl daemon-reload >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Run 'systemctl daemon-reload' failed!"
fi
else
if [ -h "/etc/init.d/${MYSQL_SYSV_INIT_SCRIPT}" ]; then
echononl "Entferne vorhandenen Symlink \"/etc/init.d/${MYSQL_SYSV_INIT_SCRIPT}\".."
echo "" >> ${logdir}/main.log
echo "## - Entferne vorhandenen Symlink \"/etc/init.d/${MYSQL_SYSV_INIT_SCRIPT}\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "rm /etc/init.d/${MYSQL_SYSV_INIT_SCRIPT}" >> ${logdir}/main.log
rm /etc/init.d/${MYSQL_SYSV_INIT_SCRIPT} >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Kann Symlink /etc/init.d/${MYSQL_SYSV_INIT_SCRIPT} nicht entfernen..
fi
fi
if [ -f "/etc/init.d/${MYSQL_SYSV_INIT_SCRIPT}" ]; then
echononl "Entferne vorhandenen Datei \"/etc/init.d/${MYSQL_SYSV_INIT_SCRIPT}\".."
echo "" >> ${logdir}/main.log
echo "## - Entferne vorhandenen Datei \"/etc/init.d/${MYSQL_SYSV_INIT_SCRIPT}\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "rm /etc/init.d/${MYSQL_SYSV_INIT_SCRIPT}" >> ${logdir}/main.log
rm /etc/init.d/${MYSQL_SYSV_INIT_SCRIPT} >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Kann Datei /etc/init.d/${MYSQL_SYSV_INIT_SCRIPT} nicht entfernen..
fi
fi
echononl "Erstelle Symlink \"/etc/init.d/${MYSQL_SYSV_INIT_SCRIPT}\".."
echo "" >> ${logdir}/main.log
echo "## - Erstelle Symlink \"/etc/init.d/${MYSQL_SYSV_INIT_SCRIPT}\"" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
if $PARALLEL_INSTALLATION ; then
echo "ln -s \"${MYSQL_INSTALL_DIR}/support-files/${SUPPORT_FILE_INIT_SCRIPT}\" \"/etc/init.d/${MYSQL_SYSV_INIT_SCRIPT}\"" >> ${logdir}/main.log
ln -s "${MYSQL_INSTALL_DIR}/support-files/${SUPPORT_FILE_INIT_SCRIPT}" /etc/init.d/${MYSQL_SYSV_INIT_SCRIPT} >> ${logdir}/main.log 2>&1
else
echo "ln -s \"$(dirname $MYSQL_INSTALL_DIR)/mysql/support-files/${MYSQL_SYSV_INIT_SCRIPT}\" \"/etc/init.d/${MYSQL_SYSV_INIT_SCRIPT}\"" >> ${logdir}/main.log
ln -s "$(dirname $MYSQL_INSTALL_DIR)/mysql/support-files/${MYSQL_SYSV_INIT_SCRIPT}" /etc/init.d/${MYSQL_SYSV_INIT_SCRIPT} >> ${logdir}/main.log 2>&1
fi
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Kann Symlink $MYSQL_INSTALL_DIR/support-files/${MYSQL_SYSV_INIT_SCRIPT} --> /etc/init.d/${MYSQL_SYSV_INIT_SCRIPT} nicht erstellen.."
fi
echononl "Setze ulimit im Startscript.."
echo "" >> ${logdir}/main.log
echo "## - Setze ulimit im Startscript" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "sed -i \"1 s/\(.*\)/\1\n\nulimit -n \\\`ulimit -Hn\\\`\n/\" /etc/init.d/${MYSQL_SYSV_INIT_SCRIPT}" >> ${logdir}/main.log
sed -i "1 s/\(.*\)/\1\n\nulimit -n \`ulimit -Hn\`\n/" $(realpath /etc/init.d/${MYSQL_SYSV_INIT_SCRIPT}) >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Kann \"ulimit\" im Startscript nicht setzen /etc/init.d/${MYSQL_SYSV_INIT_SCRIPT} nicht setzen.."
fi
echononl "Aktiviere den MySQL Datenbank Service für den automatischem Start"
echo "" >> ${logdir}/main.log
echo "## - Aktiviere den MySQL Datenbank Service für den automatischem Start" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
if $SYSTEMD_EXISTS ; then
echo "systemctl enable ${MYSQL_SYSV_INIT_SCRIPT}" >> ${logdir}/main.log
systemctl enable ${MYSQL_SYSV_INIT_SCRIPT} >> ${logdir}/main.log 2>&1
else
echo "update-rc.d ${MYSQL_SYSV_INIT_SCRIPT} defaults" >> ${logdir}/main.log
update-rc.d ${MYSQL_SYSV_INIT_SCRIPT} defaults >> ${logdir}/main.log 2>&1
fi
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
if $SYSTEMD_EXISTS ; then
error "Konnte \"${MYSQL_SYSV_INIT_SCRIPT}\" im systemd nicht aktivieren.."
else
error "Konnte MySQL Run Level Links (autom. boot) nicht erstellen.."
fi
fi
echononl "Run 'systemctl daemon-reload' to reload units."
if $SYSTEMD_EXISTS ; then
echo "" >> ${logdir}/main.log
echo "## - Run 'systemctl daemon-reload' to reload units." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "systemctl daemon-reload" >> ${logdir}/main.log
systemctl daemon-reload >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Run 'systemctl daemon-reload' failed!"
fi
else
echo_skipped
fi
fi
echo ""
echononl "Erstelle MySQL Run-Verzeichnis '$MYSQL_RUN_DIR'.."
if [[ ! -d "${MYSQL_RUN_DIR}" ]] ; then
echo "" >> ${logdir}/main.log
echo "## - Erstelle MySQL Run-Verzeichnis '$MYSQL_RUN_DIR'.." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "mkdir $MYSQL_RUN_DIR" >> ${logdir}/main.log
mkdir $MYSQL_RUN_DIR >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Kann MySQL Run-Verzeichnis \"${MYSQL_RUN_DIR}\" nicht erstellen.."
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
echononl "Setze Besitzer \"${MYSQL_USER}:${MYSQL_GROUP}\" für Run-Verzeichnis"
echo "" >> ${logdir}/main.log
echo "## - Setze Besitzer \"${MYSQL_USER}:${MYSQL_GROUP}\" für Run-Verzeichnis" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "chown ${MYSQL_USER}:${MYSQL_GROUP} ${MYSQL_RUN_DIR}" >> ${logdir}/main.log
chown ${MYSQL_USER}:${MYSQL_GROUP} ${MYSQL_RUN_DIR} >> ${logdir}/main.log 2>&1
if [[ $? -eq 0 ]] ; then
echo_ok
else
echo_failed
error "Kann Besitzer für das MySQL Run-Verzeichnis \"${MYSQL_RUN_DIR}\" nicht ändern.."
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
else
echo_skipped
fi
## -----
## - Starte MySQL Datenbank Service
## -----
echo ""
echo ""
echo -e "\033[37m\033[1mStarte MySQL Datenbank Service\033[m"
echo ""
echo "" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
echo "## - Starte MySQL Datenbank Service" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
echononl "Starte MySQL Datenbankserver.."
echo "" >> ${logdir}/main.log
echo "## - Starte MySQL Datenbankserver" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
if $INSTALL_SYSTEMD_SERVICE ; then
echo "systemctl start \"$MYSQL_SERVICE_FILE\"" >> ${logdir}/main.log
systemctl start "$MYSQL_SERVICE_FILE" >> ${logdir}/main.log 2>&1
if [[ $? -eq 0 ]]; then
echo_ok
else
echo_failed
error Konnte MySQL Datenbankserver nicht starten..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
else
if $SYSTEMD_EXISTS ; then
echo "systemctl start ${MYSQL_SYSV_INIT_SCRIPT}" >> ${logdir}/main.log
systemctl start ${MYSQL_SYSV_INIT_SCRIPT} >> ${logdir}/main.log 2>&1
else
echo "/etc/init.d/${MYSQL_SYSV_INIT_SCRIPT} start" >> ${logdir}/main.log
/etc/init.d/${MYSQL_SYSV_INIT_SCRIPT} start >> ${logdir}/main.log 2>&1
fi
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Konnte MySQL Datenbankserver nicht starten..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
fi
echononl "Sleep for 5 seconds.."
echo_wait
sleep 5
echo_ok
## -----
## - Konfiguration ( Teil 2) MySQL Installation
## -----
echo ""
echo ""
echo -e "\033[37m\033[1mKonfiguration (Teil 2) der $MYSQL_DISTRIBUTION $MYSQL_VERSION Installation\033[m"
echo ""
echo "" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
echo "## - Konfiguration (Teil 2) der $MYSQL_DISTRIBUTION $MYSQL_VERSION Installation" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
if ! $UPDATE_MYSQL ; then
## - Delete rows with empty 'User' from table mysql.user
## -
echononl "Delete rows with empty 'User' from table mysql.user.."
echo "" >> ${logdir}/main.log
echo "## - Delete rows with empty 'User' from table mysql.user" >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot mysql -N -s -e \"DELETE FROM user where User = ''\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot mysql -N -s -e "DELETE FROM user where User = ''" >> ${logdir}/main.log 2>&1
if [[ $? -eq 0 ]]; then
echo_ok
else
echo_failed
error "Deleting rows with empty 'User' from table mysql.user failed!"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
## - Drop database test
## -
if [[ -d "${MYSQL_DATA_DIR}/test" ]]; then
echononl "Delete database 'test'.."
echo "" >> ${logdir}/main.log
echo "## - Delete database 'test'.." >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot mysql -N -s -e \"DROP DATABASE test\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot mysql -N -s -e "DROP DATABASE test" >> ${logdir}/main.log 2>&1
if [[ $? -eq 0 ]]; then
echo_ok
else
echo_failed
error "Deleting database 'test' failed!"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
echononl "Delete rows concerning database 'test' from table 'mysql.db'.."
echo "" >> ${logdir}/main.log
echo "## - Delete rows concerning database 'test' from table 'mysql.db'.." >> ${logdir}/main.log
echo "## - " >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot mysql -N -s -e \"DELETE FROM db WHERE Db LIKE 'test%'\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot mysql -N -s -e "DELETE FROM db WHERE Db LIKE 'test%'" >> ${logdir}/main.log 2>&1
if [[ $? -eq 0 ]]; then
echo_ok
else
echo_failed
error "Deleting rows concerning database 'test' from table 'mysql.db' failed!"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
fi
## - Set root password
## -
if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]] \
&& [[ $MYSQL_MINOR_VERSION -ge 4 ]] ; then
echononl "Setze root Passwort für den MySQL Zugang"
echo "" >> ${logdir}/main.log
echo "## - Setze root Passwort für den MariaDB Zugang" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot mysql -N -s -e \"ALTER USER root@localhost IDENTIFIED VIA unix_socket OR mysql_native_password USING PASSWORD('$MYSQL_ROOT_PW')\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot mysql -N -s -e "ALTER USER root@localhost IDENTIFIED VIA unix_socket OR mysql_native_password USING PASSWORD('$MYSQL_ROOT_PW')" \
>> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Konnte root Passwort für den MariaDB Server nicht setzen..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
## - Flush privileges
## -
echononl "Neu Einlesen der Berechtigung (MySQL Server).."
echo "" >> ${logdir}/main.log
echo "## - Neu Einlesen der Berechtigung (MySQL Server)" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot -p$MYSQL_ROOT_PW mysql -N -s -e \"FLUSH PRIVILEGES\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot -p$MYSQL_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..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
elif [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]] \
|| ( [[ "$MYSQL_DISTRIBUTION" = "MySQL" ]] \
&& [[ $MYSQL_MAJOR_VERSION -eq 5 ]] \
&& [[ $MYSQL_MINOR_VERSION -le 6 ]] ); then
echononl "Setze root Passwort für den MySQL Zugang"
echo "" >> ${logdir}/main.log
echo "## - Setze root Passwort für den MariaDB Zugang" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot mysql -N -s -e \"UPDATE user SET Password = password('$MYSQL_ROOT_PW') WHERE User = 'root'\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot mysql -N -s -e "UPDATE user SET Password = password('$MYSQL_ROOT_PW') WHERE User = 'root'" \
>> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Konnte root Passwort für den MariaDB Server nicht setzen..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
## - Flush privileges
## -
echononl "Neu Einlesen der Berechtigung (MySQL Server).."
echo "" >> ${logdir}/main.log
echo "## - Neu Einlesen der Berechtigung (MySQL Server)" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot mysql -N -s -e \"FLUSH PRIVILEGES\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -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..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
else
if [[ "$MYSQL_MAJOR_VERSION" -lt 8 ]]; then
echononl "Setze root Passwort für den MySQL Zugang"
echo "" >> ${logdir}/main.log
echo "## - Setze root Passwort für den MySQL Zugang" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot mysql -N -s -e \"UPDATE user SET authentication_string = password('$MYSQL_ROOT_PW') WHERE User = 'root'\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot mysql -N -s -e "UPDATE user SET authentication_string = password('$MYSQL_ROOT_PW') WHERE User = 'root'" \
>> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Konnte root Passwort für den MySQL Server nicht setzen..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
## - Flush privileges
## -
echononl "Neu Einlesen der Berechtigung (MySQL Server).."
echo "" >> ${logdir}/main.log
echo "## - Neu Einlesen der Berechtigung (MySQL Server)" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot mysql -N -s -e \"FLUSH PRIVILEGES\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -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..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
else
## - Flush privileges
## -
echononl "Neu Einlesen der Berechtigung (MySQL Server).."
echo "" >> ${logdir}/main.log
echo "## - Neu Einlesen der Berechtigung (MySQL Server)" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot mysql -N -s -e \"FLUSH PRIVILEGES\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -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..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
echononl "Setze root Passwort für den MySQL Zugang"
echo "" >> ${logdir}/main.log
echo "## - Setze root Passwort für den MySQL Zugang" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot mysql -N -s -e \"ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$MYSQL_ROOT_PW'\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot mysql -N -s -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$MYSQL_ROOT_PW'" \
>> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Konnte root Passwort für den MySQL Server nicht setzen..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
fi # if [[ "$MYSQL_MAJOR_VERSION" -lt 8 ]]
fi
else
## - Run mysql_upgrade
## -
echononl "Run 'mysql_upgrade -uroot' - this may take some (long) time.."
echo_wait
echo "" >> ${logdir}/main.log
echo "## - Run 'mysql_upgrade -uroot' - this may take some (long) time" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql_upgrade -S $MYSQL_UNIX_SOCKET -uroot -p$MYSQL_ROOT_PW" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql_upgrade -S $MYSQL_UNIX_SOCKET -uroot -p$MYSQL_ROOT_PW >> ${logdir}/main.log 2>&1
ret_val=$?
if [[ $ret_val -eq 0 ]] ; then
echo_ok
elif [[ $ret_val -eq 2 ]] ; then
echo_skipped
warn "Return Code was '2' - it means MySQL is already upgraded to ${MYSQL_VERSION}"
else
echo_failed
error "Script \"mysql_upgrade -uroot\" failed!"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
fi
_sys_maint_cnf_needed=false
if $UPDATE_MYSQL ; then
echononl "Copy 'sys-maint.cnf from old installation to the new one.."
echo "" >> ${logdir}/main.log
echo "## - Copy 'sys-maint.cnf from old installation to the new one" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
if [[ "$CURRENT_VERSION" = "$MYSQL_VERSION" ]] ; then
echo "cp -a \"$MYSQL_INSTALL_DIR.$_backup_date/sys-maint.cnf\" \"${MYSQL_INSTALL_DIR}/sys-maint.cnf\"" \
>> ${logdir}/main.log
cp -a $MYSQL_INSTALL_DIR.$_backup_date/sys-maint.cnf "${MYSQL_INSTALL_DIR}/sys-maint.cnf" \
>> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
_sys_maint_cnf_needed=true
error "Konnte Konfigurationsdatei 'sys-maint.cnf' nicht vom alten in das neue Installations Verz.kopieren.."
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
else
echo "cp -a \"$(realpath ${MYSQL_CUR_INSTALL_DIR}/sys-maint.cnf)\" \"${MYSQL_INSTALL_DIR}/sys-maint.cnf\"" \
>> ${logdir}/main.log
cp -a "$(realpath ${MYSQL_CUR_INSTALL_DIR}/sys-maint.cnf)" "${MYSQL_INSTALL_DIR}/sys-maint.cnf" \
>> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
_sys_maint_cnf_needed=true
error "Konnte Konfigurationsdatei 'sys-maint.cnf' nicht vom alten in das neue Installations Verz.kopieren.."
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
fi
if [[ ! -f "${MYSQL_INSTALL_DIR}/sys-maint.cnf" ]] ; then
_sys_maint_cnf_needed=true
else
echononl "Ersetze 'socket' variable in '${MYSQL_INSTALL_DIR}/sys-maint.cnf'.."
if $(grep -q -E "^\s*socket\s*=\s*${MYSQL_UNIX_SOCKET}" "${MYSQL_INSTALL_DIR}/sys-maint.cnf" 2> /dev/null) ; then
echo_skipped
else
echo "" >> ${logdir}/main.log
echo "## - Ersetze 'socket' variable in '${MYSQL_INSTALL_DIR}/sys-maint.cnf'.." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "perl -i -n -p -e \"s#^(\s*socket\s*=).*#\1 ${MYSQL_UNIX_SOCKET}#\" \"${MYSQL_INSTALL_DIR}/sys-maint.cnf\"" >> ${logdir}/main.log
perl -i -n -p -e "s#^(\s*socket\s*=).*#\1 ${MYSQL_UNIX_SOCKET}#" "${MYSQL_INSTALL_DIR}/sys-maint.cnf" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Ersetzen von 'socket' variable in '${MYSQL_INSTALL_DIR}/sys-maint.cnf' fehlgeschlagen."
fi
fi
fi
fi
if ! $UPDATE_MYSQL || $_sys_maint_cnf_needed ; then
echo
echononl "Erstelle Passwort für maintance (MySQL) User.."
echo "" >> ${logdir}/main.log
echo "## - Erstelle Passwort für maintance (MySQL) User" >> ${logdir}/main.log
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..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
_maint_user=sys-maint
if [[ "$MYSQL_MAJOR_VERSION" -lt 8 ]] || [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]]; then
echononl "Erstelle maintance MySQL User '${_maint_user}' - localhost.."
echo "" >> ${logdir}/main.log
echo "## - Erstelle maintance MySQL User '${_maint_user}' - localhost" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -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 -S $MYSQL_UNIX_SOCKET -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
error Konnte \(MySQL\) User \"${_maint_user}\" nicht erstellen..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
else
echononl "Erstelle maintance MySQL User '${_maint_user}' - localhost.."
echo "" >> ${logdir}/main.log
echo "## - Erstelle maintance MySQL User '${_maint_user}' - localhost" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot -p$MYSQL_ROOT_PW mysql -N -s -e \"CREATE USER '${_maint_user}'@'localhost' IDENTIFIED WITH mysql_native_password BY '$_maint_passwd'\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot -p$MYSQL_ROOT_PW mysql -N -s -e "CREATE USER '${_maint_user}'@'localhost' IDENTIFIED WITH mysql_native_password BY '$_maint_passwd'" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Konnte \(MySQL\) User \"${_maint_user}\" nicht erstellen..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
echononl "Set (all) privileges to MySQL User '${_maint_user}' - localhost.."
echo "" >> ${logdir}/main.log
echo "## - Set (all) privileges to MySQL User '${_maint_user}' - localhost" >> ${logdir}/main.log
echo "" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot -p$MYSQL_ROOT_PW mysql -N -s -e \"GRANT ALL ON *.* TO '${_maint_user}'@'localhost'\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot -p$MYSQL_ROOT_PW mysql -N -s -e "GRANT ALL ON *.* TO '${_maint_user}'@'localhost'" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Konnte \(MySQL\) User \"${_maint_user}\" nicht erstellen..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
fi # if [[ "$MYSQL_MAJOR_VERSION" -lt 8 ]]
echononl "Give 'Grant' permission to MySQL User '${_maint_user}'.."
if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]] \
&& [[ $MYSQL_MINOR_VERSION -ge 4 ]] ; then
# - All user accounts, passwords, and global privileges are now stored in
# - the mysql.global_priv table. The mysql.user table still exists and has
# - exactly the same set of columns as before, but its now a view that
# - references the mysql.global_priv table. Tools that analyze the mysql.user
# - table should continue to workas before.
# -
# - See also:
# - https://mariadb.com/kb/en/library/authentication-from-mariadb-104/
echo_skipped
warn "Column 'Grant_priv' is not updatable.
However, root@localhost user is allowed to login without a password
via the local Unix socket file defined by the socket system variable,
as long as the login is attempted from a process owned by the operating
system root user account.
as user root use:
\033[37m\033[1mmysql -S $MYSQL_UNIX_SOCKET\033[m"
else
echo "" >> ${logdir}/main.log
echo "## - Give 'Grant' permission to MySQL User '${_maint_user}'" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot -p$MYSQL_ROOT_PW mysql -N -s -e \"UPDATE user SET Grant_priv = 'y' WHERE user = '${_maint_user}';\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot -p$MYSQL_ROOT_PW mysql -N -s -e "UPDATE user SET Grant_priv = 'y' WHERE user = '${_maint_user}';" >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error Giving \"Grant\"-permission to \(MySQL\) User \"${_maint_user}\" failed
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
fi
echononl "Neu Einlesen der Berechtigung (MySQL Server).."
echo "" >> ${logdir}/main.log
echo "## - Neu Einlesen der Berechtigung (MySQL Server)" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot -p$MYSQL_ROOT_PW mysql -N -s -e \"FLUSH PRIVILEGES\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -S $MYSQL_UNIX_SOCKET -uroot -p$MYSQL_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..
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
echononl "Erstelle '${MYSQL_INSTALL_DIR}/sys-maint.cnf'.."
echo "" >> ${logdir}/main.log
echo "## - Erstelle '${MYSQL_INSTALL_DIR}/sys-maint.cnf'" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "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" >> ${logdir}/main.log
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
error Konnte Konfigurationsdatei \"${MYSQL_INSTALL_DIR}/sys-maint.cnf\" nicht erstellen..
fi
fi
if $PARALLEL_INSTALLATION ; then
_logrotate_file=/etc/logrotate.d/${MYSQL_DISTRIBUTION,,}-$MYSQL_VERSION
sys_maint_file="${MYSQL_INSTALL_DIR}/sys-maint.cnf"
_mysql_binary="${MYSQL_INSTALL_DIR}/bin/mysql"
_mysqladmin_binary="${MYSQL_INSTALL_DIR}/bin/mysqladmin"
else
_logrotate_file=/etc/logrotate.d/mysql
sys_maint_file="$(dirname $MYSQL_INSTALL_DIR)/mysql/sys-maint.cnf"
_mysql_binary="$(dirname $MYSQL_INSTALL_DIR)/mysql/bin/mysql"
_mysqladmin_binary="$(dirname $MYSQL_INSTALL_DIR)/mysql/bin/mysqladmin"
fi
echononl "Erstelle Logrotate Definitionsdatei '$_logrotate_file'.."
echo "" >> ${logdir}/main.log
echo "## - Erstelle Logrotate Definitionsdatei $_logrotate_file" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "cat << EOF > $_logrotate_file
$_mysql_log
$_mysql_error_log
$_mysql_slow_query_log
{
daily
rotate 7
missingok
create 644 $MYSQL_USER $MYSQL_GROUP
compress
sharedscripts
postrotate
MYSQL=\"$_mysql_binary --defaults-file=$sys_maint_file\"
MYADMIN=\"$_mysqladmin_binary --defaults-file=$sys_maint_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" >> ${logdir}/main.log
cat << EOF > $_logrotate_file
$_mysql_log
$_mysql_error_log
$_mysql_slow_query_log
{
daily
rotate 7
missingok
create 644 $MYSQL_USER $MYSQL_GROUP
compress
sharedscripts
postrotate
MYSQL="$_mysql_binary --defaults-file=$sys_maint_file"
MYADMIN="$_mysqladmin_binary --defaults-file=$sys_maint_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
if $INSTALL_SYSTEMD_SERVICE ; then
echononl "Add 'NO_INIT=true' to systemd environmet file '$(basename ${SYSTEMD_ENV_FILE})'.."
if $(grep -E -q "^\s*NO_INIT=\"?.+\"?" ${SYSTEMD_ENV_FILE} 2> /dev/null) ; then
echo_skipped
else
echo "" >> ${logdir}/main.log
echo "## - Add 'NO_INIT=true' to systemd environmet file '$(basename ${SYSTEMD_ENV_FILE})'.." >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "cat <<EOF >> $SYSTEMD_ENV_FILE
NO_INIT=true
EOF
" >> ${logdir}/main.log
cat <<EOF >> $SYSTEMD_ENV_FILE
NO_INIT=true
EOF
if [[ $? -eq 0 ]] ; then
echo_ok
else
echo_failed
error "Adding NO_INIT=true' to systemd environmet file '$(basename ${SYSTEMD_ENV_FILE})' failed!"
fi
fi
fi # if $INSTALL_SYSTEMD_SERVICE ; then
echo
echononl "Reenable crontab for user root .."
if $_crontab_found ; then
echo "" >> ${logdir}/main.log
echo "Reenable crontab for user root" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "crontab -u root $_CRONTAB_BAKUP_FILE" >> ${logdir}/main.log
crontab -u root $_CRONTAB_BAKUP_FILE >> ${logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
echononl "Remove crontab backup file .."
echo "" >> ${logdir}/main.log
echo "## - Remove crontab backup file" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
echo "rm $_CRONTAB_BAKUP_FILE" >> ${logdir}/main.log
rm -f $_CRONTAB_BAKUP_FILE
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
else
echo_skipped
fi
info "See '${logdir}/main.log' for more details."
clean_up 0