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

105 lines
3.2 KiB
Bash
Raw Normal View History

#!/bin/bash
# Script to fix database password for explorer backend
# This script must be run with sudo privileges to reset the PostgreSQL password
set -euo pipefail
cd "$(dirname "$0")/.."
# Default configuration
DB_USER="${DB_USER:-explorer}"
DB_PASSWORD="${DB_PASSWORD:-changeme}"
DB_NAME="${DB_NAME:-explorer}"
echo "=========================================="
echo "Database Password Fix Script"
echo "=========================================="
echo ""
echo "This script will:"
echo " 1. Create or update the 'explorer' PostgreSQL user with password 'changeme'"
echo " 2. Create the 'explorer' database if it doesn't exist"
echo " 3. Grant all privileges to the explorer user"
echo ""
echo "Configuration:"
echo " User: $DB_USER"
echo " Password: $DB_PASSWORD"
echo " Database: $DB_NAME"
echo ""
# Check if running as root or with sudo
if [ "$EUID" -ne 0 ]; then
echo "⚠️ This script requires sudo privileges to modify PostgreSQL."
echo ""
echo "Please run this script with sudo:"
echo " sudo ./scripts/fix-database-password-manual.sh"
echo ""
exit 1
fi
# Check if PostgreSQL is running
echo -n "Checking PostgreSQL... "
if systemctl is-active --quiet postgresql || pg_isready >/dev/null 2>&1; then
echo "✅ PostgreSQL is running"
else
echo "❌ PostgreSQL is not running"
echo "Please start PostgreSQL first:"
echo " sudo systemctl start postgresql"
exit 1
fi
# Create or update user
echo ""
echo "Creating/updating PostgreSQL user '$DB_USER'..."
sudo -u postgres psql -c "DO \$\$
BEGIN
IF NOT EXISTS (SELECT FROM pg_user WHERE usename = '$DB_USER') THEN
CREATE USER $DB_USER WITH PASSWORD '$DB_PASSWORD';
RAISE NOTICE 'User $DB_USER created';
ELSE
ALTER USER $DB_USER WITH PASSWORD '$DB_PASSWORD';
RAISE NOTICE 'User $DB_USER password updated';
END IF;
END
\$\$;" 2>&1
# Create database
echo ""
echo "Creating database '$DB_NAME'..."
sudo -u postgres psql -c "SELECT 1 FROM pg_database WHERE datname = '$DB_NAME'" | grep -q 1 || \
sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_USER;" 2>&1
# Grant privileges
echo ""
echo "Granting privileges..."
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;" 2>&1
# Test connection
echo ""
echo -n "Testing database connection... "
if PGPASSWORD="$DB_PASSWORD" psql -h localhost -U "$DB_USER" -d "$DB_NAME" -c "SELECT 1;" >/dev/null 2>&1; then
echo "✅ Connection successful!"
echo ""
echo "=========================================="
echo "✅ Database password has been fixed!"
echo "=========================================="
echo ""
echo "Next steps:"
echo "1. Restart the backend service:"
echo " kill \$(cat /tmp/explorer_backend.pid) 2>/dev/null; ./scripts/start-backend-service.sh"
echo ""
echo "2. Verify the connection:"
echo " curl http://localhost:8080/health"
echo ""
exit 0
else
echo "❌ Connection still failing"
echo ""
echo "Please check:"
echo " 1. PostgreSQL is running: sudo systemctl status postgresql"
echo " 2. User exists: sudo -u postgres psql -c '\\du'"
echo " 3. Database exists: sudo -u postgres psql -c '\\l'"
exit 1
fi