From d46c65afa73c1aa7c78b05ef58f20a2bbc1e6599 Mon Sep 17 00:00:00 2001 From: Christoph Date: Sun, 5 Mar 2023 16:18:43 +0100 Subject: [PATCH] install_update_dovecot.sh: adjust settings og MySQL credentials. --- install_update_dovecot.sh | 140 ++++++++++++++++++++++++++------------ 1 file changed, 96 insertions(+), 44 deletions(-) diff --git a/install_update_dovecot.sh b/install_update_dovecot.sh index 756d800..10710eb 100755 --- a/install_update_dovecot.sh +++ b/install_update_dovecot.sh @@ -125,6 +125,14 @@ else SYSTEMD_EXISTS=true fi +if [[ -f "/usr/local/mysql/sys-maint.cnf" ]] ; then + DEFAULT_MYSQL_CREDENTIALS="--defaults-file=/usr/local/mysql/sys-maint.cnf" +elif [[ -f "/etc/mysql/debian.cnf" ]] ; then + DEFAULT_MYSQL_CREDENTIALS="--defaults-file=/etc/mysql/debian.cnf" +else + DEFAULT_MYSQL_CREDENTIALS="" +fi + echo echononl "\tInclude Configuration file.." @@ -195,8 +203,8 @@ fi [[ -n "$dbname" ]] || dbname="postfix" [[ -n "$dbuser" ]] || dbuser="postfix" if [[ -z "$dbhost" ]] ; then - [[ "$dbhost" = "mysql" ]] && dbhost="127.0.0.1" - [[ "$dbhost" = "postgres" ]] && dbhost="/run/postgresql" + [[ "$database" = "mysql" ]] && dbhost="unix:/run/mysqld/mysqld.sock" + [[ "$database" = "postgres" ]] && dbhost="/run/postgresql" fi [[ -n "$cert_base_dir" ]] || cert_base_dir="/etc/dovecot/ssl" @@ -471,49 +479,93 @@ if $_new ; then echo "" echo "--" echo "" - echo "Gib den Benutzernamen des/eines MySQL root user an.." + echo "Gib MySQL credentials für den root user an.." echo "" - _MYSQL_ROOT_USER=root - MYSQL_ROOT_USER= - while [ "X$MYSQL_ROOT_USER" = "X" ] - do - echononl "MySQL-User [${_MYSQL_ROOT_USER}]: " - read MYSQL_ROOT_USER - if [ "X$MYSQL_ROOT_USER" = "X" ]; then - MYSQL_ROOT_USER=$_MYSQL_ROOT_USER - fi - done - - + echo "Possible values could be:" + echo " -u root -p" + echo " -u root -S /run/mysqld/mysqld.sock" + echo " --login-path=local" + echo " --defaults-file=/usr/local/mysql/sys-maint.cnf" + echo " --defaults-file=/etc/mysql/debian.cnf" + echo " ..." + echo "" + echo -e " Type \"\033[33mNone\033[m\" if no credentials are needed for root user (MariaDB)" + echo "" + MYSQL_CREDENTIALS="" + if [[ -n "${DEFAULT_MYSQL_CREDENTIALS}" ]] ; then + while [[ -z "${MYSQL_CREDENTIALS}" ]] ; do + echononl "MySQL credentials [${DEFAULT_MYSQL_CREDENTIALS}]: " + read MYSQL_CREDENTIALS + if [[ -z "${MYSQL_CREDENTIALS}" ]] ;then + MYSQL_CREDENTIALS="${DEFAULT_MYSQL_CREDENTIALS}" + fi + done + else + while [[ -z "${MYSQL_CREDENTIALS}" ]] ; do + echononl "MySQL credentials: " + read MYSQL_CREDENTIALS + if "${MYSQL_CREDENTIALS}" ]] ; then + echo -e "\n\t\033[33m\033[1mMySQL credentials are required (or type\033[33mNone\033[m) : " + continue + fi + if [[ "$(trim ${MYSQL_CREDENTIALS,,})" = 'none' ]] ; then + MYSQL_CREDENTIALS="" + break + fi + done + fi echo "" echo "--" echo "" - echo "Gib ein Passwort für den root user an.." echo "" - _MYSQL_ROOT_PW_1="X" - _MYSQL_ROOT_PW_2="Y" - while [ "$_MYSQL_ROOT_PW_1" != "$_MYSQL_ROOT_PW_2" ] - do - echononl "Passworteingabe: " - read -s _MYSQL_ROOT_PW_1 - echo - if [ "X$_MYSQL_ROOT_PW_1" = "X" ]; then - echo -e "\n\t\033[33m\033[1mPassworteingabe erforderlich!\033[m\n" - continue - fi - echononl "Passwortwiederholung: " - read -s _MYSQL_ROOT_PW_2 - echo - if [ "X$_MYSQL_ROOT_PW_2" = "X" ]; then - echo -e "\n\t\033[33m\033[1mPasswortwiederholung erforderlich!\033[m\n" - continue - fi - if [ "$_MYSQL_ROOT_PW_1" != "$_MYSQL_ROOT_PW_2" ];then - echo -e "\n\t\033[33m\033[1mPassworteingaben sind nicht identisch!\033[m\n" - else - MYSQL_ROOT_PW=$_MYSQL_ROOT_PW_1 - fi - done + +# echo "" +# echo "--" +# echo "" +# echo "Gib den Benutzernamen des/eines MySQL root user an.." +# echo "" +# _MYSQL_ROOT_USER=root +# MYSQL_ROOT_USER= +# while [ "X$MYSQL_ROOT_USER" = "X" ] +# do +# echononl "MySQL-User [${_MYSQL_ROOT_USER}]: " +# read MYSQL_ROOT_USER +# if [ "X$MYSQL_ROOT_USER" = "X" ]; then +# MYSQL_ROOT_USER=$_MYSQL_ROOT_USER +# fi +# done +# +# +# echo "" +# echo "--" +# echo "" +# echo "Gib ein Passwort für den root user an.." +# echo "" +# _MYSQL_ROOT_PW_1="X" +# _MYSQL_ROOT_PW_2="Y" +# while [ "$_MYSQL_ROOT_PW_1" != "$_MYSQL_ROOT_PW_2" ] +# do +# echononl "Passworteingabe: " +# read -s _MYSQL_ROOT_PW_1 +# echo +# if [ "X$_MYSQL_ROOT_PW_1" = "X" ]; then +# echo -e "\n\t\033[33m\033[1mPassworteingabe erforderlich!\033[m\n" +# continue +# fi +# echononl "Passwortwiederholung: " +# read -s _MYSQL_ROOT_PW_2 +# echo +# if [ "X$_MYSQL_ROOT_PW_2" = "X" ]; then +# echo -e "\n\t\033[33m\033[1mPasswortwiederholung erforderlich!\033[m\n" +# continue +# fi +# if [ "$_MYSQL_ROOT_PW_1" != "$_MYSQL_ROOT_PW_2" ];then +# echo -e "\n\t\033[33m\033[1mPassworteingaben sind nicht identisch!\033[m\n" +# else +# MYSQL_ROOT_PW=$_MYSQL_ROOT_PW_1 +# fi +# done +# MYSQL_CREDENTIALS="-u ${MYSQL_ROOT_USER} -p${MYSQL_ROOT_PW}" fi fi @@ -1184,12 +1236,12 @@ EOF elif [ "$db_driver" = "mysql" ]; then - if ! mysql -u$MYSQL_ROOT_USER -p$MYSQL_ROOT_PW -N -s -e \ + if ! mysql ${MYSQL_CREDENTIALS} -N -s -e \ "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '$dbname'" 2>/dev/null \ | grep $_db_name > /dev/null 2>&1 ; then echononl "\tCreate database ${dbname}.." - mysql -u$MYSQL_ROOT_USER -p$MYSQL_ROOT_PW -N -s -e \ + mysql ${MYSQL_CREDENTIALS} -N -s -e \ "CREATE DATABASE IF NOT EXISTS $dbname CHARACTER SET utf8 COLLATE utf8_general_ci" > ${_log_dir}/error.log 2>&1 if [ "$?" = 0 ]; then @@ -1209,7 +1261,7 @@ EOF fi echononl "\tCreate database user ${dbuser}.." - mysql -u$MYSQL_ROOT_USER -p$MYSQL_ROOT_PW -N -s -e \ + mysql ${MYSQL_CREDENTIALS} -N -s -e \ "GRANT ALL ON ${dbname}.* TO '${dbuser}'@'localhost' IDENTIFIED BY '$dbpassword'" > ${_log_dir}/error.log 2>&1 if [ "$?" = 0 ]; then @@ -1229,7 +1281,7 @@ EOF fi echononl "\tFlushing database privileges.." - mysql -u$MYSQL_ROOT_USER -p$MYSQL_ROOT_PW -N -s -e "FLUSH PRIVILEGES" > ${_log_dir}/error.log 2>&1 + mysql ${MYSQL_CREDENTIALS} -N -s -e "FLUSH PRIVILEGES" > ${_log_dir}/error.log 2>&1 if [ "$?" = 0 ]; then echo -e "$rc_done"