Files
dbis_core/scripts/grant-permissions-remote.sh

89 lines
2.9 KiB
Bash
Raw Normal View History

#!/bin/bash
# Grant Database Permissions via SSH to Proxmox Host
set -e
PROXMOX_HOST="${PROXMOX_HOST:-192.168.11.10}"
VMID="${VMID:-10100}"
DB_NAME="${DB_NAME:-dbis_core}"
DB_USER="${DB_USER:-dbis}"
echo "=========================================="
echo "Granting Database Permissions (Remote)"
echo "=========================================="
echo ""
echo "Proxmox Host: $PROXMOX_HOST"
echo "VMID: $VMID"
echo "Database: $DB_NAME"
echo "User: $DB_USER"
echo ""
# Check if we can SSH to Proxmox host
if ! ssh -o ConnectTimeout=5 -o BatchMode=yes root@"$PROXMOX_HOST" exit 2>/dev/null; then
echo "⚠️ Cannot SSH to Proxmox host ($PROXMOX_HOST)"
echo " Please ensure:"
echo " 1. SSH key is set up for root@$PROXMOX_HOST"
echo " 2. Host is reachable"
echo ""
echo " Or run manually on Proxmox host:"
echo " pct exec $VMID -- bash -c \"su - postgres -c \\\"psql -d $DB_NAME << 'EOF'"
echo " GRANT CONNECT ON DATABASE $DB_NAME TO $DB_USER;"
echo " GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;"
echo " ALTER USER $DB_USER CREATEDB;"
echo " \\\\c $DB_NAME"
echo " GRANT ALL ON SCHEMA public TO $DB_USER;"
echo " GRANT CREATE ON SCHEMA public TO $DB_USER;"
echo " ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO $DB_USER;"
echo " ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO $DB_USER;"
echo " EOF\\\"\""
exit 1
fi
echo "✅ Connected to Proxmox host"
echo ""
echo "Step 1: Granting database-level permissions..."
ssh root@"$PROXMOX_HOST" "pct exec $VMID -- bash -c \"su - postgres -c \\\"psql -d postgres << 'EOF'
GRANT CONNECT ON DATABASE $DB_NAME TO $DB_USER;
GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;
ALTER USER $DB_USER CREATEDB;
EOF\\\"\""
if [ $? -ne 0 ]; then
echo "❌ Failed to grant database-level permissions"
exit 1
fi
echo "✅ Database-level permissions granted"
echo ""
echo "Step 2: Granting schema-level permissions..."
ssh root@"$PROXMOX_HOST" "pct exec $VMID -- bash -c \"su - postgres -c \\\"psql -d $DB_NAME << 'EOF'
GRANT ALL ON SCHEMA public TO $DB_USER;
GRANT CREATE ON SCHEMA public TO $DB_USER;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO $DB_USER;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO $DB_USER;
EOF\\\"\""
if [ $? -ne 0 ]; then
echo "❌ Failed to grant schema-level permissions"
exit 1
fi
echo "✅ Schema-level permissions granted"
echo ""
echo "Step 3: Verifying permissions..."
ssh root@"$PROXMOX_HOST" "pct exec $VMID -- bash -c \"su - postgres -c \\\"psql -d $DB_NAME -c 'SELECT current_user, current_database();'\\\"\"" > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "✅ Permissions verified"
else
echo "⚠️ Verification had issues, but permissions may still be granted"
fi
echo ""
echo "=========================================="
echo "✅ Database permissions granted!"
echo "=========================================="