Add support for MariaDB and Percona MySQL Server.

This commit is contained in:
Christoph 2018-02-26 03:40:43 +01:00
parent afe30b381c
commit b5e14dc11a
4 changed files with 9520 additions and 150 deletions

3
.gitignore vendored
View File

@ -1,4 +1,7 @@
*.swp
*.tar.gz
/BAK/*
/log*
/mysql*
/mariadb*
/percona*

4498
OLD/install_mariadb.sh Executable file

File diff suppressed because it is too large Load Diff

4498
OLD/install_mysql.sh Executable file

File diff suppressed because it is too large Load Diff

View File

@ -2,8 +2,6 @@
_backup_date="$(date +"%Y-%m-%d-%H%M")"
_MYSQL_VERSION=5.7.20
_MYSQL_SRC_BASE_DIR=$(dirname $(realpath $0))
_MYSQL_LOG_DIR=/var/log/mysql
@ -19,15 +17,23 @@ _DISTRIBUTION=Debian
_VSERVER_GUEST=nein
_required_debian_packages="libevent-dev
libjemalloc-dev
_required_debian_packages="default-jdk
gnutls-dev
libaio-dev
libarchive-dev
libbison-dev
libboost-all-dev
libreadline-gplv2-dev
libcrack2-dev
libdw-dev
libelf-dev
libevent-dev
libgroonga-dev
libjemalloc-dev
libjudy-dev
libpam0g-dev
libpcre3-dev
gnutls-dev
default-jdk"
libreadline-gplv2-dev
libsystemd-dev"
_CRONTAB_BAKUP_FILE="$(mktemp)"
@ -184,17 +190,104 @@ else
UPDATE_MYSQL=false
fi
if $UPDATE_MYSQL ; then
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 $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="$(mysql -V | grep -o -E "Distrib\s+[3-9]+\.[0-9]+\.[0-9]+" | awk '{print$2}')"
if [ "$?" = "0" ]; then
CURRENT_VERSION="$(echo $_MYSQLD_VERSION | grep -o -E "[0-9]+\.[0-9]+\.[0-9]+(-[0-9]+)?")"
CURRENT_MAIN_VERSION="$(echo $MYSQL_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
@ -203,25 +296,42 @@ fi
#echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Gib die Versionsnummer der zu installierenden MySQL-Distribution an."
echo "Gib die Versionsnummer der zu installierenden MySQL-Distribution (${MYSQL_DISTRIBUTION}) an."
echo ""
MYSQL_VERSION=
while [ "X$MYSQL_VERSION" = "X" ]
do
echononl "MySQL Version [$_MYSQL_VERSION]: "
echononl "$MYSQL_DISTRIBUTION Version : "
read MYSQL_VERSION
if [ "X$MYSQL_VERSION" = "X" ]; then
MYSQL_VERSION=$_MYSQL_VERSION
fi
_MYSQL_INSTALL_DIR=/usr/local/mysql-$MYSQL_VERSION
_MYSQL_DATA_DIR=/data/mysql-$MYSQL_VERSION
distfile=mysql-${MYSQL_VERSION}.tar.gz
_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 '.' -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"
distfile=${MYSQL_DISTRIBUTION,,}-${MYSQL_VERSION}.tar.gz
fi
echo ""
@ -238,7 +348,13 @@ do
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"
@ -264,8 +380,17 @@ MY_CNF_FILE="${MYSQL_INSTALL_DIR}/etc/my.cnf"
if $UPDATE_MYSQL ; then
echo ""
echononl "Ermittle Installations Verz. der existierenden MySQL Installation."
if [[ -d "$(dirname "$MYSQL_INSTALL_DIR")/mysql-$CURRENT_VERSION" ]]; then
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
@ -291,9 +416,18 @@ done
if $UPDATE_MYSQL ; then
echo ""
echononl "Ermittle MySQL-Datenbank Verz. der existierenden MySQL Installation."
if [[ -d "$(dirname "$MYSQL_DATA_DIR")/mysql-$CURRENT_VERSION" ]]; then
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
@ -546,8 +680,12 @@ MYSQL_SERVICE_FILE=""
MYSQL_SYSV_INIT_SCRIPT=""
SYSTEMD_PID_DIR=""
if $INSTALL_SYSTEMD_SERVICE ; then
if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]]; then
MYSQL_SERVICE_FILE="mariadb.service"
else
MYSQL_SERVICE_FILE="mysqld.service"
SYSTEMD_PID_DIR="$MYSQL_DATA_DIR"
fi
else
MYSQL_SYSV_INIT_SCRIPT="mysql.server"
fi
@ -569,10 +707,19 @@ fi
echo ""
echo "Linuxdistribution.........: $DISTRIBUTION"
echo ""
echo "MySQL Distribution........: $MYSQL_DISTRIBUTION"
echo "MySQL Versionsnummer......: $MYSQL_VERSION"
echo " MySQL Major Verion......: $MYSQL_MAIN_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 "Sourcecodeverzeicnis......: $MYSQL_SRC_BASE_DIR"
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"
@ -608,32 +755,32 @@ done
## - 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 ""
### - 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
@ -673,10 +820,19 @@ 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 Major Verion.....: $MYSQL_MAIN_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 "## - Sourcecodeverzeicnis......: $MYSQL_SRC_BASE_DIR" >> ${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
@ -713,8 +869,18 @@ 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
@ -757,6 +923,49 @@ if [[ -z "$_MYSQL_INITSCRIPT" ]] && [[ -z "$_SYSTEMD_SERVICE_FILE" ]] && $UPDATE
fi
## ---
## - 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
## -----
@ -1167,6 +1376,30 @@ if ! $UPDATE_MYSQL ; then
fatal "Installing dependency packages for \"mysql-server\" 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
@ -1337,6 +1570,9 @@ if [ "$?" = "0" ]; then
_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
else
echo_failed
fatal Kann LOG Verzeichnis \"${MYSQL_LOG_DIR}\" nicht erstellen..
@ -1386,6 +1622,9 @@ if [ -d "${MYSQL_SRC_DIR}" ];then
fi
if $INSTALL_SYSTEMD_SERVICE ; then
if [[ "$MYSQL_DISTRIBUTION" != "MariaDB" ]] ; then
if [[ ! -d "$SYSTEMD_PID_DIR" ]] ; then
echononl "Create PID directory '$SYSTEMD_PID_DIR' .."
echo "" >> ${logdir}/main.log
@ -1414,6 +1653,7 @@ if $INSTALL_SYSTEMD_SERVICE ; then
echo_failed
error "Changing owner of PID directory '$SYSTEMD_PID_DIR' failed!"
fi
fi
fi
fi
@ -1425,13 +1665,13 @@ fi
echo ""
echo ""
echo -e "\033[37m\033[1mBasis Installation MySQL $MYSQL_VERSION\033[m"
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 $MYSQL_VERSION" >> ${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.
@ -1482,12 +1722,19 @@ else
fi
#echo ""
#echo "shell> mkdir \"$MYSQL_INSTALL_DIR\""
#echo "shell> \"cp $MYSQL_SRC_BASE_DIR/boost_1_59_0.tar.gz\" \"$MYSQL_INSTALL_DIR\""
#echo ""
#sleep 120
# - Erstelle Optionen für 'cmake'
# -
# ---
# - MySQL / Percona
# ---
# - Note:
# -
# - Since MySQL v 5.7.16 the default 'secure_file_priv' value has changed
@ -1496,6 +1743,29 @@ fi
# -
# - We change the default to empty ("") with -D INSTALL_SECURE_FILE_PRIVDIR="" option
# -
# ---
# - MariaDBD
# ---
# -
# - 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
# -
@ -1504,6 +1774,23 @@ 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
-DENABLED_LOCAL_INFILE=ON
-DGRN_LOG_PATH=$mariadb_groonga_log
-DCONC_WITH_MYSQLCOMPAT=ON
"
if $INSTALL_SYSTEMD_SERVICE ; then
cmake_options="$cmake_options -DWITH_SYSTEMD=yes"
fi
else
cmake_options="
-DCMAKE_INSTALL_PREFIX=$MYSQL_INSTALL_DIR
-DMYSQL_DATADIR=$MYSQL_DATA_DIR
@ -1512,11 +1799,15 @@ cmake_options="
-DENABLED_LOCAL_INFILE=1
-DDOWNLOAD_BOOST=1
-DWITH_BOOST=$MYSQL_INSTALL_DIR
"
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
@ -1572,13 +1863,13 @@ fi
echo ""
echo ""
echo -e "\033[37m\033[1mEinbinden der MySQL $MYSQL_VERSION Installation in das System\033[m"
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 $MYSQL_VERSION Installation in das System" >> ${logdir}/main.log
echo "## - Einbinden der $MYSQL_DISTRIBUTION $MYSQL_VERSION Installation in das System" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
echononl "Konfiguriere Manpages.."
@ -1764,13 +2055,13 @@ fi
echo ""
echo ""
echo -e "\033[37m\033[1mKonfiguration (Teil 1) der MySQL $MYSQL_VERSION Installation\033[m"
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 $MYSQL_VERSION Installation" >> ${logdir}/main.log
echo "## - Konfiguration (Teil 1) der $MYSQL_DISTRIBUTION $MYSQL_VERSION Installation" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
@ -1806,30 +2097,33 @@ else
fi
echo
echononl "Richte MySQL Systemtabellen ein.."
echononl "Richte $MYSQL_DISTRIBUTION Systemtabellen ein.."
if ! $UPDATE_MYSQL ; then
cd $MYSQL_INSTALL_DIR
echo "" >> ${logdir}/main.log
echo "## - Richte MySQL Systemtabellen ein" >> ${logdir}/main.log
if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]] ; then
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 "${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 " --language=$MYSQL_INSTALL_DIR/share/german" >> ${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 \
${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/german \
--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 Systemtabellen ist fehlgeschlagen..
error Das Einrichten der $MYSQL_DISTRIBUTION Systemtabellen ist fehlgeschlagen..
echononl "continue anyway [yes/no]: "
read OK
@ -1840,6 +2134,41 @@ if ! $UPDATE_MYSQL ; then
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
@ -1919,6 +2248,7 @@ else
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
@ -1936,6 +2266,10 @@ else
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
@ -3803,10 +4137,18 @@ if $INSTALL_SYSTEMD_SERVICE ; then
echo "" >> ${logdir}/main.log
echo "## - Kopiere Service File nach '/etc/systemd/system'" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
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
if [[ $? -eq 0 ]]; then
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
@ -4045,13 +4387,13 @@ sleep 2
echo ""
echo ""
echo -e "\033[37m\033[1mKonfiguration (Teil 2) der MySQL $MYSQL_VERSION Installation\033[m"
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 $MYSQL_VERSION Installation" >> ${logdir}/main.log
echo "## - Konfiguration (Teil 2) der $MYSQL_DISTRIBUTION $MYSQL_VERSION Installation" >> ${logdir}/main.log
echo "## -----" >> ${logdir}/main.log
if ! $UPDATE_MYSQL ; then
@ -4131,6 +4473,33 @@ if ! $UPDATE_MYSQL ; then
## - Set root password
## -
echononl "Setze root Passwort für den MySQL Zugang"
if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]]; then
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 -uroot mysql -N -s -e \"UPDATE user SET Password = password('$MYSQL_ROOT_PW') WHERE User = 'root'\"" >> ${logdir}/main.log
${MYSQL_INSTALL_DIR}/bin/mysql -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
else
echo "" >> ${logdir}/main.log
echo "## - Setze root Passwort für den MySQL Zugang" >> ${logdir}/main.log
echo "## -" >> ${logdir}/main.log
@ -4154,6 +4523,8 @@ if ! $UPDATE_MYSQL ; then
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
fi
## - Flush privileges
## -
echononl "Neu Einlesen der Berechtigung (MySQL Server).."