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

86 lines
2.5 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
# Grant Database Permissions for dbis user
# Run this on the Proxmox host to grant permissions in the database container
set -e
VMID="${VMID:-10100}"
DB_NAME="${DB_NAME:-dbis_core}"
DB_USER="${DB_USER:-dbis}"
echo "=========================================="
echo "Granting Database Permissions"
echo "=========================================="
echo ""
echo "VMID: $VMID"
echo "Database: $DB_NAME"
echo "User: $DB_USER"
echo ""
# Check if pct command exists (must run on Proxmox host)
if ! command -v pct &> /dev/null; then
echo "❌ Error: This script must be run on the Proxmox host (pct command not found)"
echo ""
echo "Alternative: Run these commands manually:"
echo " ssh root@192.168.11.10"
echo " pct exec $VMID -- bash"
echo " su - postgres -c \"psql -d $DB_NAME\""
echo ""
exit 1
fi
# Check if container exists
if ! pct list | grep -q "^\s*$VMID\s"; then
echo "❌ Error: Container $VMID not found"
exit 1
fi
echo "Step 1: Granting database-level permissions..."
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..."
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..."
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 - user $DB_USER can connect to $DB_NAME"
else
echo "⚠️ Verification had issues, but permissions may still be granted"
fi
echo ""
echo "=========================================="
echo "✅ Database permissions granted!"
echo "=========================================="
echo ""
echo "Next step: Run the migration from your local machine:"
echo " cd /home/intlc/projects/proxmox/dbis_core"
echo " ./scripts/run-chart-of-accounts-migration.sh"