105 lines
3.2 KiB
Bash
105 lines
3.2 KiB
Bash
|
|
#!/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
|
||
|
|
|