Files
eventlens/scripts/fix-db-user.sh
T

41 lines
1.1 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
if [[ ! -f "${PROJECT_DIR}/.env" ]]; then
echo ".env wurde in ${PROJECT_DIR} nicht gefunden." >&2
exit 1
fi
read_env_value() {
local key="$1"
local line
line="$(grep -E "^${key}=" "${PROJECT_DIR}/.env" | tail -n 1 || true)"
if [[ -z "${line}" ]]; then
echo "Wert ${key} wurde in ${PROJECT_DIR}/.env nicht gefunden." >&2
exit 1
fi
printf '%s' "${line#*=}"
}
DB_NAME="$(read_env_value DB_NAME)"
DB_USER="$(read_env_value DB_USER)"
DB_PASSWORD="$(read_env_value DB_PASSWORD)"
MYSQL_ROOT_PASSWORD="$(read_env_value MYSQL_ROOT_PASSWORD)"
docker compose -f "${PROJECT_DIR}/docker-compose.yml" exec -T db \
mariadb -uroot "-p${MYSQL_ROOT_PASSWORD}" <<SQL
CREATE DATABASE IF NOT EXISTS \`${DB_NAME}\`;
CREATE USER IF NOT EXISTS '${DB_USER}'@'%' IDENTIFIED BY '${DB_PASSWORD}';
ALTER USER '${DB_USER}'@'%' IDENTIFIED BY '${DB_PASSWORD}';
GRANT ALL PRIVILEGES ON \`${DB_NAME}\`.* TO '${DB_USER}'@'%';
FLUSH PRIVILEGES;
SQL
echo "MariaDB-App-User '${DB_USER}' wurde fuer '${DB_NAME}' aktualisiert."