43 lines
977 B
Bash
Executable File
43 lines
977 B
Bash
Executable File
#!/bin/bash
|
|
# Script Version: 03
|
|
# Description: Erstellt PostgreSQL-User und -Datenbank für ein Spiel ($GAMENAME als Argument)
|
|
|
|
# ========
|
|
# Variablen setzen
|
|
# ========
|
|
GAMENAME="$1"
|
|
DBUSER="$GAMENAME"
|
|
DBPASS=$(openssl rand -hex 16)
|
|
|
|
# Check
|
|
if [ -z "$GAMENAME" ]; then
|
|
echo "Usage: $0 <GAMENAME>"
|
|
exit 1
|
|
fi
|
|
|
|
# ========
|
|
# PostgreSQL-User erstellen (falls nicht vorhanden)
|
|
# ========
|
|
sudo -u postgres psql <<EOF
|
|
DO \$\$
|
|
BEGIN
|
|
IF NOT EXISTS (SELECT FROM pg_catalog.pg_user WHERE usename = '${DBUSER}') THEN
|
|
CREATE USER ${DBUSER} WITH PASSWORD '${DBPASS}';
|
|
END IF;
|
|
END
|
|
\$\$;
|
|
EOF
|
|
|
|
# ========
|
|
# PostgreSQL-Datenbank erstellen (außerhalb PL/pgSQL!)
|
|
# ========
|
|
DB_EXISTS=$(sudo -u postgres psql -tAc "SELECT 1 FROM pg_database WHERE datname='${GAMENAME}'")
|
|
if [ "$DB_EXISTS" != "1" ]; then
|
|
sudo -u postgres createdb -O "$DBUSER" "$GAMENAME"
|
|
fi
|
|
|
|
# Feedback
|
|
echo "✅ PostgreSQL-Datenbank '$GAMENAME' und User '$DBUSER' bereit."
|
|
echo "🔐 Passwort: $DBPASS"
|
|
|