Blog Post

Azure Database Support Blog
2 MIN READ

Azure PostgreSQL Lesson Learned #6: Major Upgrade Blocked by Password Auth (The One-Change Fix)

HaiderZ-MSFT's avatar
HaiderZ-MSFT
Icon for Microsoft rankMicrosoft
Nov 13, 2025

We encountered a support case involving Azure Database for PostgreSQL Flexible Server where Major Version Upgrade failed from PostgreSQL 11 → higher. This blog explains the root cause, resolution steps, and best practices to prevent similar issues.

Co‑authored with angesalsaa​ 

Symptoms

  • Portal Upgrade action fails or the precheck reports that upgrading with password authentication from 11 isn’t allowed. 
  • Users still authenticate with legacy MD5/password (or the server’s auth isn’t set to allow SCRAM‑SHA‑256).

Error you can hit:
- Fail at precheck.

Root Cause

PostgreSQL 11 on Flexible Server requires SCRAM to be enabled before attempting an in‑place major version upgrade to higher versions. The service precheck blocks the upgrade if the server is still on password/MD5‑only auth.

Why SCRAM? It’s the modern, secure challenge‑response protocol (SCRAM‑SHA‑256) recommended by Postgres.

Mentioned in our Public Documentation under Unsupported Configuration Parameter:

Major Version Upgrades - Azure Database for PostgreSQL | Microsoft Learn

Contributing Factors

  • No prior auth hardening: password_encryption not set to scram-sha-256.
  • User passwords still stored as MD5 hashes, not re-issued under SCRAM.
  • Clients/drivers unverified for SCRAM support (older libraries may fail).

Specific Conditions We Observed

  • Source server on PG 11 (Flexible Server).
  • Upgrade target to a higher supported version via portal.

Operational Checks

Before you flip the switch, confirm you can safely move authentication:

  • List server auth parameters (portal → Server parameters):

    Verify these 2 server parameters password_encryption & azure.accepted_password_auth_method = scram-sha-256 and authentication methods include SCRAM.

Mitigation

Goal: Enable SCRAM and re-issue all passwords → re-run the upgrade.

1) Enable SCRAM on the server

  • Portal: Server parameters → set:
    • password_encryption = scram-sha-256
    • azure.accepted_password_auth_method = scram-sha-256

Check Important Note: Connectivity with SCRAM - Azure Database for PostgreSQL | Microsoft Learn

 

These are dynamic properties and don't require server restart.

Verify client/driver compatibility

Ensure your application drivers (JDBC, Npgsql, libpq, etc.) support SCRAM before enforcing it. Update client libraries if needed.

Re‑run the Major Version Upgrade

  • Portal: OverviewUpgrade → select target major version → Upgrade.

Post‑Resolution

  • Upgrade completed successfully.
  • Authentication now uses SCRAM‑SHA‑256; users continue connecting with updated passwords.
  • No further precheck blocks on auth.

Prevention & Best Practices

  • Standardize on SCRAM (password_encryption = scram-sha-256) across all environments.
  • Inventory roles and rotate passwords under SCRAM before your upgrade window.
  • Validate drivers in CI/CD for SCRAM support to avoid runtime surprises.
  • Read the upgrade docs (concepts + how‑to) and version policy so you understand supported targets and timelines.
  • Understand Unsupported Scenarios: Major Version Upgrades - Azure Database for PostgreSQL | Microsoft Learn

Why This Matters

Skipping this step causes failed upgrades, longer downtime, and emergency rollbacks. Moving to SCRAM not only unblocks the upgrade but also improves security posture (MD5 is deprecated in the community).

Key Takeaways

  • Issue: PG11 → higher major upgrade blocked due to password/MD5 authentication.
  • Fix: Enable SCRAM and reset all role passwords, then retry the upgrade.

References

 

Updated Nov 13, 2025
Version 2.0
No CommentsBe the first to comment