Files
explorer-monorepo/scripts/fix-database-password.sh

91 lines
3.1 KiB
Bash
Raw Normal View History

#!/bin/bash
# Script to fix database password for explorer backend
# This script will reset the PostgreSQL password to match the backend configuration
set -euo pipefail
cd "$(dirname "$0")/.."
# Default configuration
DB_HOST="${DB_HOST:-localhost}"
DB_PORT="${DB_PORT:-5432}"
DB_USER="${DB_USER:-explorer}"
DB_PASSWORD="${DB_PASSWORD:-changeme}"
DB_NAME="${DB_NAME:-explorer}"
echo "=========================================="
echo "Database Password Fix Script"
echo "=========================================="
echo ""
echo "Configuration:"
echo " Host: $DB_HOST"
echo " Port: $DB_PORT"
echo " User: $DB_USER"
echo " Database: $DB_NAME"
echo " New Password: [REDACTED]"
echo ""
# Check if PostgreSQL is accessible
echo -n "Checking PostgreSQL accessibility... "
if pg_isready -h "$DB_HOST" -p "$DB_PORT" >/dev/null 2>&1; then
echo "✅ PostgreSQL is accessible"
else
echo "❌ PostgreSQL is not accessible at $DB_HOST:$DB_PORT"
echo "Please ensure PostgreSQL is running and accessible."
exit 1
fi
# Try to reset password using docker-compose if available
if [ -f "deployment/docker-compose.yml" ]; then
echo ""
echo "Attempting to reset password via docker-compose..."
# Check if postgres container is running
if docker-compose -f deployment/docker-compose.yml ps postgres 2>/dev/null | grep -q "Up"; then
echo "PostgreSQL container is running via docker-compose"
# Try to reset password using postgres superuser
echo "Resetting password for user '$DB_USER'..."
if docker-compose -f deployment/docker-compose.yml exec -T postgres psql -U postgres -c "ALTER USER $DB_USER WITH PASSWORD '$DB_PASSWORD';" 2>&1; then
echo "✅ Password reset successful via docker-compose"
else
echo "⚠️ Could not reset password via docker-compose (may need superuser access)"
fi
fi
fi
# Test the connection with new password
echo ""
echo -n "Testing database connection with new password... "
if PGPASSWORD="$DB_PASSWORD" psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -c "SELECT 1;" >/dev/null 2>&1; then
echo "✅ Connection successful!"
echo ""
echo "Database password has been fixed. The backend should now be able to connect."
echo ""
echo "Next steps:"
echo "1. Restart the backend service:"
echo " kill \$(cat /tmp/explorer_backend.pid) && ./scripts/start-backend-service.sh"
echo ""
echo "2. Verify the connection:"
echo " curl http://localhost:8080/health"
exit 0
else
echo "❌ Connection still failing"
echo ""
echo "The password reset may not have worked, or the database requires different credentials."
echo ""
echo "Options:"
echo "1. Check if the database is running in Docker:"
echo " docker ps | grep postgres"
echo ""
echo "2. Manually reset the password:"
echo " docker exec -it <postgres-container> psql -U postgres -c \"ALTER USER $DB_USER WITH PASSWORD '$DB_PASSWORD';\""
echo ""
echo "3. Or update the backend to use the correct password:"
echo " export DB_PASSWORD='<actual-password>'"
echo " ./scripts/start-backend-service.sh"
exit 1
fi