7146 lines
238 KiB
Bash
Executable File
7146 lines
238 KiB
Bash
Executable File
#!/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"
|
||
|
||
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
|
||
"
|
||
|
||
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 it’s 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
|