From 66d321018461c6ff47317af0a2ea321bd50da224 Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 23 Sep 2024 23:06:52 +0200 Subject: [PATCH] upgrade-mattermost.sh: add support for PostgreSQL database. --- upgrade-mattermost.sh | 128 ++++++++++++++++++++++++++---------------- 1 file changed, 81 insertions(+), 47 deletions(-) diff --git a/upgrade-mattermost.sh b/upgrade-mattermost.sh index 756d7c6..97908e8 100755 --- a/upgrade-mattermost.sh +++ b/upgrade-mattermost.sh @@ -218,6 +218,8 @@ DEFAULT_FQHN_HOSTNAME="$(hostname -f)" DEFAULT_MATTERMOST_USER="mattermost" DEFAULT_MATTERMOST_GROUP="mattermost" +DEFAULT_DB_TYPE="pgsql" + DEFAULT_MATTERMOST_BASE_INSTALL_PATH="/opt" DEFAULT_MATTERMOST_TMP_DIR="/tmp" @@ -231,6 +233,9 @@ fi [[ -n "$FQHN_HOSTNAME" ]] && DEFAULT_FQHN_HOSTNAME="$FQHN_HOSTNAME" +if [[ -z "$DB_TYPE" ]] ; then + fatal "Missing database type (DB_TYPE)!" +fi if [[ -z "$DB_NAME" ]] ; then fatal "Missing database name (DB_NAME)!" fi @@ -404,39 +409,41 @@ do done -if [[ -n "$MYSQL_CREDENTIAL_ARGS" ]] ; then - if ! $(mysql $MYSQL_CREDENTIAL_ARGS -N -s -e 'quit' > /dev/null 2>&1) ; then - fatal "Parameter MYSQL_CREDENTIAL_ARGS is given, but a connection to MySQL Service failed.!" - fi - USE_MYSQL_CREDENTIAL_ARGS=true -else - USE_MYSQL_CREDENTIAL_ARGS=false - - _MYSQL_ROOT_PW="" - echo "" - echo -e "\033[32m--\033[m" - echo "" - echo "Insert root password of MySQL Database Service" - echo "" - while [ "X${_MYSQL_ROOT_PW}" = "X" ]; do - - echononl "Passworteingabe: " - read -s _MYSQL_ROOT_PW - if [ "X${_MYSQL_ROOT_PW}" = "X" ]; then - echo -e "\n\t\033[33m\033[1mPassworteingabe erforderlich!\033[m\n" - continue +if [[ "$DB_TYPE" = "mysql" ]] ; then + if [[ -n "$MYSQL_CREDENTIAL_ARGS" ]] ; then + if ! $(mysql $MYSQL_CREDENTIAL_ARGS -N -s -e 'quit' > /dev/null 2>&1) ; then + fatal "Parameter MYSQL_CREDENTIAL_ARGS is given, but a connection to MySQL Service failed.!" fi - if $(pgrep mysqld_safe > /dev/null 2>&1) || $(pgrep mysqld > /dev/null 2>&1); then - if $(mysql --user="root" --password="$_MYSQL_ROOT_PW" -N -s -e 'quit' > /dev/null 2>&1) ; then - MYSQL_ROOT_PW=$_MYSQL_ROOT_PW - else - echo -e "\n\t\033[33m\033[1mFalsches Passwort\033[m\n" - _MYSQL_ROOT_PW="" + USE_MYSQL_CREDENTIAL_ARGS=true + else + USE_MYSQL_CREDENTIAL_ARGS=false + + _MYSQL_ROOT_PW="" + echo "" + echo -e "\033[32m--\033[m" + echo "" + echo "Insert root password of MySQL Database Service" + echo "" + while [ "X${_MYSQL_ROOT_PW}" = "X" ]; do + + echononl "Passworteingabe: " + read -s _MYSQL_ROOT_PW + if [ "X${_MYSQL_ROOT_PW}" = "X" ]; then + echo -e "\n\t\033[33m\033[1mPassworteingabe erforderlich!\033[m\n" + continue fi - else - fatal "MySQL seems not be running. Start MySQL Service and try installing mattermost again." - fi - done + if $(pgrep mysqld_safe > /dev/null 2>&1) || $(pgrep mysqld > /dev/null 2>&1); then + if $(mysql --user="root" --password="$_MYSQL_ROOT_PW" -N -s -e 'quit' > /dev/null 2>&1) ; then + MYSQL_ROOT_PW=$_MYSQL_ROOT_PW + else + echo -e "\n\t\033[33m\033[1mFalsches Passwort\033[m\n" + _MYSQL_ROOT_PW="" + fi + else + fatal "MySQL seems not be running. Start MySQL Service and try installing mattermost again." + fi + done + fi fi @@ -460,10 +467,18 @@ echo -e " Mattermost user...................: $MATTERMOST_USER" echo -e " Mattermost group..................: $MATTERMOST_GROUP" echo "" echo "" -if $USE_MYSQL_CREDENTIAL_ARGS ; then - echo -e " MYSQL_CREDENTIAL_ARGS.............: $MYSQL_CREDENTIAL_ARGS" +if [[ "${DB_TYPE}" = "pgsql" ]] ; then + echo -e " Database Type.....................: PostgreSQL" else - echo -e " Root password MySQL...............: **" + echo -e " Database Type.....................: MySQL" +fi +echo "" +if [[ "${DB_TYPE}" = "mysql" ]]; then + if $USE_MYSQL_CREDENTIAL_ARGS ; then + echo -e " MYSQL_CREDENTIAL_ARGS.............: $MYSQL_CREDENTIAL_ARGS" + else + echo -e " Root password MySQL...............: **" + fi fi echo "" echo -e " Database Name.....................: $DB_NAME" @@ -586,22 +601,41 @@ else fi echononl "Backup mattermost database.." -mysqldump --login-path=local --opt $DB_NAME \ - > ${MATTERMOST_BASE_INSTALL_PATH}/${DB_NAME}-${backup_date}.sql 2> $log_file -if [[ $? -ne 0 ]]; then - echo_failed - error "$(cat "$log_file")" +if [[ "${DB_TYPE}" = "mysql" ]]; then + mysqldump --login-path=local --opt $DB_NAME \ + > ${MATTERMOST_BASE_INSTALL_PATH}/${DB_NAME}-${backup_date}.sql 2> $log_file + if [[ $? -ne 0 ]]; then + echo_failed + error "$(cat "$log_file")" - 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]: " + echononl "continue anyway [yes/no]: " read OK - done - [[ $OK = "yes" ]] || fatal "Stopped by user" + OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')" + while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do + echononl "Wrong entry! - repeat [yes/no]: " + read OK + done + [[ $OK = "yes" ]] || fatal "Stopped by user" + else + echo_ok + fi else - echo_ok + pg_dump -U ${DB_USER} -F p -c ${DB_NAME} -f ${MATTERMOST_BASE_INSTALL_PATH}/${DB_NAME}-${backup_date}.sql 2> $log_file + if [[ $? -ne 0 ]]; then + echo_failed + error "$(cat "$log_file")" + + 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 "Stopped by user" + else + echo_ok + fi fi echononl "Backup mattermost installation directory.."