# Database Password Fix Commands for VMID 5000 (Blockscout) ## Commands for Root User in VMID 5000 These commands should be run **inside VMID 5000** as the root user. You can execute them using: ```bash # From Proxmox host pct exec 5000 -- bash -c "COMMAND_HERE" # Or if you have shell access to VMID 5000 # (SSH into the container or use pct enter 5000) ``` --- ## Option 1: Fix Database Password (If PostgreSQL is Accessible from VMID 5000) ### Step 1: Check Database Connectivity ```bash # Check if PostgreSQL is accessible pg_isready -h localhost -p 5432 -U explorer # Or test connection psql -h localhost -p 5432 -U postgres -c "SELECT version();" ``` ### Step 2: Reset Explorer User Password ```bash # Connect as postgres superuser and reset password psql -h localhost -p 5432 -U postgres << EOF -- Create user if it doesn't exist, or update password if it does DO \$\$ BEGIN IF NOT EXISTS (SELECT FROM pg_user WHERE usename = 'explorer') THEN CREATE USER explorer WITH PASSWORD 'changeme'; RAISE NOTICE 'User explorer created'; ELSE ALTER USER explorer WITH PASSWORD 'changeme'; RAISE NOTICE 'User explorer password updated'; END IF; END \$\$; -- Create database if it doesn't exist SELECT 'CREATE DATABASE explorer OWNER explorer' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'explorer')\gexec -- Grant privileges GRANT ALL PRIVILEGES ON DATABASE explorer TO explorer; EOF ``` ### Step 3: Verify Connection ```bash # Test connection with new password PGPASSWORD=changeme psql -h localhost -p 5432 -U explorer -d explorer -c "SELECT 1;" ``` --- ## Option 2: If Database is on Different Host If the database is running on a different host (e.g., `192.168.11.10` or another container): ### Step 1: Check Network Connectivity ```bash # Test if database host is reachable ping -c 3 192.168.11.10 # Test if PostgreSQL port is accessible nc -zv 192.168.11.10 5432 # Or telnet 192.168.11.10 5432 ``` ### Step 2: Reset Password on Remote Database ```bash # Replace DB_HOST with actual database host IP DB_HOST="192.168.11.10" # or "localhost" if on same host psql -h $DB_HOST -p 5432 -U postgres << EOF DO \$\$ BEGIN IF NOT EXISTS (SELECT FROM pg_user WHERE usename = 'explorer') THEN CREATE USER explorer WITH PASSWORD 'changeme'; ELSE ALTER USER explorer WITH PASSWORD 'changeme'; END IF; END \$\$; SELECT 'CREATE DATABASE explorer OWNER explorer' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'explorer')\gexec GRANT ALL PRIVILEGES ON DATABASE explorer TO explorer; EOF ``` --- ## Option 3: If Using Docker Compose in VMID 5000 If Blockscout is running via Docker Compose and the database is in a Docker container: ### Step 1: Check Docker Containers ```bash # List running containers docker ps # Check if postgres container is running docker ps | grep postgres ``` ### Step 2: Access PostgreSQL Container ```bash # Find postgres container name (adjust if different) POSTGRES_CONTAINER=$(docker ps | grep postgres | awk '{print $1}') # Reset password in postgres container docker exec -it $POSTGRES_CONTAINER psql -U postgres << EOF DO \$\$ BEGIN IF NOT EXISTS (SELECT FROM pg_user WHERE usename = 'explorer') THEN CREATE USER explorer WITH PASSWORD 'changeme'; ELSE ALTER USER explorer WITH PASSWORD 'changeme'; END IF; END \$\$; SELECT 'CREATE DATABASE explorer OWNER explorer' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'explorer')\gexec GRANT ALL PRIVILEGES ON DATABASE explorer TO explorer; EOF ``` --- ## Option 4: Complete One-Line Fix (If PostgreSQL is Local) ```bash # Single command to fix everything (run as root in VMID 5000) psql -h localhost -p 5432 -U postgres -c "CREATE USER explorer WITH PASSWORD 'changeme';" 2>/dev/null || \ psql -h localhost -p 5432 -U postgres -c "ALTER USER explorer WITH PASSWORD 'changeme';" && \ psql -h localhost -p 5432 -U postgres -c "CREATE DATABASE explorer OWNER explorer;" 2>/dev/null && \ psql -h localhost -p 5432 -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE explorer TO explorer;" ``` --- ## Verification Commands After running the fix, verify the connection: ```bash # Test connection PGPASSWORD=changeme psql -h localhost -p 5432 -U explorer -d explorer -c "SELECT current_user, current_database();" # Check user exists psql -h localhost -p 5432 -U postgres -c "\du explorer" # Check database exists psql -h localhost -p 5432 -U postgres -c "\l explorer" ``` --- ## Troubleshooting ### If `psql` command not found: ```bash # Install PostgreSQL client apt-get update apt-get install -y postgresql-client ``` ### If connection to postgres user fails: ```bash # Check PostgreSQL authentication configuration cat /etc/postgresql/*/main/pg_hba.conf | grep -v "^#" # Or if using Docker, check container environment docker exec $POSTGRES_CONTAINER env | grep POSTGRES ``` ### If database host is unknown: ```bash # Find database host from Blockscout configuration grep -r "DATABASE_URL\|DB_HOST\|POSTGRES" /opt/blockscout/ 2>/dev/null | head -10 # Or check docker-compose.yml cat /opt/blockscout/docker-compose.yml | grep -E "POSTGRES|DATABASE" | head -10 ``` --- ## Notes - Replace `changeme` with the actual password if different - Replace `localhost` with the actual database host if different - The database might be running in a separate container or on a different host - Check Blockscout's configuration to determine the correct database host and credentials