diff --git a/scripts/backup.sh b/scripts/backup.sh index 2e1ee62..0060c3a 100644 --- a/scripts/backup.sh +++ b/scripts/backup.sh @@ -12,6 +12,8 @@ function backup_init() { BACKUP_FILE_DB_SQLITE="${BACKUP_DIR}/db.${NOW}.sqlite3" # backup vaultwarden database file (postgresql) BACKUP_FILE_DB_POSTGRESQL="${BACKUP_DIR}/db.${NOW}.dump" + # backup vaultwarden database file (mysql) + BACKUP_FILE_DB_MYSQL="${BACKUP_DIR}/db.${NOW}.sql" # backup vaultwarden config file BACKUP_FILE_CONFIG="${BACKUP_DIR}/config.${NOW}.json" # backup vaultwarden rsakey files @@ -47,6 +49,19 @@ function backup_db_postgresql() { fi } +function backup_db_mysql() { + color blue "backup vaultwarden mysql database" + + mysqldump -h "${MYSQL_HOST}" -P "${MYSQL_PORT}" -u "${MYSQL_USERNAME}" -p"${MYSQL_PASSWORD}" "${MYSQL_DATABASE}" > "${BACKUP_FILE_DB_MYSQL}" + if [[ $? != 0 ]]; then + color red "backup vaultwarden postgresql database failed" + + send_mail_content "FALSE" "Backup failed at $(date +"%Y-%m-%d %H:%M:%S %Z"). Reason: Backup postgresql database failed." + + exit 1 + fi +} + function backup_config() { color blue "backup vaultwarden config" @@ -108,6 +123,7 @@ function backup() { case "${DB_TYPE}" in SQLITE) backup_db_sqlite ;; POSTGRESQL) backup_db_postgresql ;; + MYSQL) backup_db_mysql ;; esac backup_config diff --git a/scripts/includes.sh b/scripts/includes.sh index b6c222c..eeaef38 100644 --- a/scripts/includes.sh +++ b/scripts/includes.sh @@ -326,7 +326,9 @@ function init_env() { color yellow "DB_TYPE: ${DB_TYPE}" if [[ "${DB_TYPE}" == "POSTGRESQL" ]]; then - color yellow "DB_URL: ${PG_HOST}:${PG_PORT}:${PG_DBNAME}:${PG_USERNAME}:***(${#PG_PASSWORD} Chars)" + color yellow "DB_URL: postgresql://${PG_USERNAME}:***(${#PG_PASSWORD} Chars)@${PG_HOST}:${PG_PORT}/${PG_DBNAME}" + elif [[ "${DB_TYPE}" == "MYSQL" ]]; then + color yellow "DB_URL: mysql://${MYSQL_USERNAME}:***(${#MYSQL_PASSWORD} Chars)@${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}" else color yellow "DATA_DB: ${DATA_DB}" fi @@ -414,6 +416,26 @@ function init_env_db() { # PG_PASSWORD get_env PG_PASSWORD + elif [[ "${DB_TYPE^^}" == "MYSQL" ]]; then # mysql + DB_TYPE="MYSQL" + + # MYSQL_HOST + get_env MYSQL_HOST + + # MYSQL_PORT + get_env MYSQL_PORT + MYSQL_PORT="${MYSQL_PORT:-"3306"}" + + # MYSQL_DATABASE + get_env MYSQL_DATABASE + MYSQL_DATABASE="${MYSQL_DATABASE:-"vaultwarden"}" + + # MYSQL_USERNAME + get_env MYSQL_USERNAME + MYSQL_USERNAME="${MYSQL_USERNAME:-"vaultwarden"}" + + # MYSQL_PASSWORD + get_env MYSQL_PASSWORD else # sqlite DB_TYPE="SQLITE" fi