From e46a32968a3f7c0f42d725c4692daeea9f8438f2 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 10 Nov 2025 13:05:04 +0100 Subject: [PATCH] Update tools.func --- misc/tools.func | 63 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/misc/tools.func b/misc/tools.func index 4ad861a68..bb13a98d0 100644 --- a/misc/tools.func +++ b/misc/tools.func @@ -3044,6 +3044,69 @@ setup_mariadb() { msg_ok "Setup MariaDB $MARIADB_VERSION" } +# ------------------------------------------------------------------------------ +# Creates MariaDB database with user and optional grants / sql-modes +# +# Variablen: +# DB_NAME - Datenbankname (required) +# DB_USER - Datenbank Benutzer (required) +# DB_PASS - Passwort (optional, auto-gen wenn leer) +# DB_CREDS_FILE - Credentials File (optional default ~/mariadb_${DB_NAME}.creds) +# DB_EXTRA_GRANTS - (optional) Komma-separiert, volle SQL Grant Statements +# Beispiel: "GRANT SELECT ON \`mysql\`.\`time_zone_name\`" +# DB_SQL_MODE - (optional) z.B. "" oder "STRICT_TRANS_TABLES" +# +# exports: +# MARIADB_DB_NAME, MARIADB_DB_USER, MARIADB_DB_PASS +# ------------------------------------------------------------------------------ + +function setup_mariadb_db() { + if [[ -z "$DB_NAME" || -z "$DB_USER" ]]; then + msg_error "DB_NAME und DB_USER müssen gesetzt sein" + return 1 + fi + + if [[ -z "$DB_PASS" ]]; then + DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) + fi + + msg_info "Setting up MariaDB Database" + + $STD mariadb -u root -e "CREATE DATABASE \`$DB_NAME\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" + $STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';" + $STD mariadb -u root -e "GRANT ALL ON \`$DB_NAME\`.* TO '$DB_USER'@'localhost';" + + # optional extra grants + if [[ -n "$DB_EXTRA_GRANTS" ]]; then + IFS=',' read -ra G_LIST <<<"$DB_EXTRA_GRANTS" + for g in "${G_LIST[@]}"; do + g=$(echo "$g" | xargs) + $STD mariadb -u root -e "$g TO '$DB_USER'@'localhost';" + done + fi + + # optional sql mode + if [[ -n "$DB_SQL_MODE" ]]; then + $STD mariadb -u root -e "SET GLOBAL sql_mode='$DB_SQL_MODE';" + fi + + $STD mariadb -u root -e "FLUSH PRIVILEGES;" + + local CREDS_FILE="${DB_CREDS_FILE:-~/${APPLICATION}.creds}" + { + echo "MariaDB Credentials" + echo "Database: $DB_NAME" + echo "User: $DB_USER" + echo "Password: $DB_PASS" + } >>"$CREDS_FILE" + + msg_ok "Set up MariaDB Database" + + export MARIADB_DB_NAME="$DB_NAME" + export MARIADB_DB_USER="$DB_USER" + export MARIADB_DB_PASS="$DB_PASS" +} + # ------------------------------------------------------------------------------ # Installs or updates MongoDB to specified major version. #