install_update_dovecot.sh: adjust settings og MySQL credentials.

This commit is contained in:
Christoph 2023-03-05 16:18:43 +01:00
parent 0bfa8bc87e
commit d46c65afa7

View File

@ -125,6 +125,14 @@ else
SYSTEMD_EXISTS=true SYSTEMD_EXISTS=true
fi 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 echo
echononl "\tInclude Configuration file.." echononl "\tInclude Configuration file.."
@ -195,8 +203,8 @@ fi
[[ -n "$dbname" ]] || dbname="postfix" [[ -n "$dbname" ]] || dbname="postfix"
[[ -n "$dbuser" ]] || dbuser="postfix" [[ -n "$dbuser" ]] || dbuser="postfix"
if [[ -z "$dbhost" ]] ; then if [[ -z "$dbhost" ]] ; then
[[ "$dbhost" = "mysql" ]] && dbhost="127.0.0.1" [[ "$database" = "mysql" ]] && dbhost="unix:/run/mysqld/mysqld.sock"
[[ "$dbhost" = "postgres" ]] && dbhost="/run/postgresql" [[ "$database" = "postgres" ]] && dbhost="/run/postgresql"
fi fi
[[ -n "$cert_base_dir" ]] || cert_base_dir="/etc/dovecot/ssl" [[ -n "$cert_base_dir" ]] || cert_base_dir="/etc/dovecot/ssl"
@ -471,49 +479,93 @@ if $_new ; then
echo "" echo ""
echo "--" echo "--"
echo "" echo ""
echo "Gib den Benutzernamen des/eines MySQL root user an.." echo "Gib MySQL credentials für den root user an.."
echo "" echo ""
_MYSQL_ROOT_USER=root echo "Possible values could be:"
MYSQL_ROOT_USER= echo " -u root -p<Passwort>"
while [ "X$MYSQL_ROOT_USER" = "X" ] echo " -u root -S /run/mysqld/mysqld.sock"
do echo " --login-path=local"
echononl "MySQL-User [${_MYSQL_ROOT_USER}]: " echo " --defaults-file=/usr/local/mysql/sys-maint.cnf"
read MYSQL_ROOT_USER echo " --defaults-file=/etc/mysql/debian.cnf"
if [ "X$MYSQL_ROOT_USER" = "X" ]; then echo " ..."
MYSQL_ROOT_USER=$_MYSQL_ROOT_USER echo ""
fi echo -e " Type \"\033[33mNone\033[m\" if no credentials are needed for root user (MariaDB)"
done 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 "--"
echo "" echo ""
echo "Gib ein Passwort für den root user an.."
echo "" echo ""
_MYSQL_ROOT_PW_1="X"
_MYSQL_ROOT_PW_2="Y" # echo ""
while [ "$_MYSQL_ROOT_PW_1" != "$_MYSQL_ROOT_PW_2" ] # echo "--"
do # echo ""
echononl "Passworteingabe: " # echo "Gib den Benutzernamen des/eines MySQL root user an.."
read -s _MYSQL_ROOT_PW_1 # echo ""
echo # _MYSQL_ROOT_USER=root
if [ "X$_MYSQL_ROOT_PW_1" = "X" ]; then # MYSQL_ROOT_USER=
echo -e "\n\t\033[33m\033[1mPassworteingabe erforderlich!\033[m\n" # while [ "X$MYSQL_ROOT_USER" = "X" ]
continue # do
fi # echononl "MySQL-User [${_MYSQL_ROOT_USER}]: "
echononl "Passwortwiederholung: " # read MYSQL_ROOT_USER
read -s _MYSQL_ROOT_PW_2 # if [ "X$MYSQL_ROOT_USER" = "X" ]; then
echo # MYSQL_ROOT_USER=$_MYSQL_ROOT_USER
if [ "X$_MYSQL_ROOT_PW_2" = "X" ]; then # fi
echo -e "\n\t\033[33m\033[1mPasswortwiederholung erforderlich!\033[m\n" # done
continue #
fi #
if [ "$_MYSQL_ROOT_PW_1" != "$_MYSQL_ROOT_PW_2" ];then # echo ""
echo -e "\n\t\033[33m\033[1mPassworteingaben sind nicht identisch!\033[m\n" # echo "--"
else # echo ""
MYSQL_ROOT_PW=$_MYSQL_ROOT_PW_1 # echo "Gib ein Passwort für den root user an.."
fi # echo ""
done # _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
fi fi
@ -1184,12 +1236,12 @@ EOF
elif [ "$db_driver" = "mysql" ]; then 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 \ "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '$dbname'" 2>/dev/null \
| grep $_db_name > /dev/null 2>&1 ; then | grep $_db_name > /dev/null 2>&1 ; then
echononl "\tCreate database ${dbname}.." 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 "CREATE DATABASE IF NOT EXISTS $dbname CHARACTER SET utf8 COLLATE utf8_general_ci" > ${_log_dir}/error.log 2>&1
if [ "$?" = 0 ]; then if [ "$?" = 0 ]; then
@ -1209,7 +1261,7 @@ EOF
fi fi
echononl "\tCreate database user ${dbuser}.." 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 "GRANT ALL ON ${dbname}.* TO '${dbuser}'@'localhost' IDENTIFIED BY '$dbpassword'" > ${_log_dir}/error.log 2>&1
if [ "$?" = 0 ]; then if [ "$?" = 0 ]; then
@ -1229,7 +1281,7 @@ EOF
fi fi
echononl "\tFlushing database privileges.." 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 if [ "$?" = 0 ]; then
echo -e "$rc_done" echo -e "$rc_done"