no PostgreSQL user name specified in startup packet

SQLSTATE 28000 condition invalid_authorization_specification class 28 — Invalid Authorization Specification severity FATAL
Reproduced & verified on PostgreSQL 14.23, 15.18, 16.14, 17.10 and 18.4 — identical message on every version.
Last reviewed 11 Jun 2026 · Reproduced live with the SQL on this page.

Symptoms

A connection’s startup packet did not specify a PostgreSQL user name. PostgreSQL rejects it with SQLSTATE 28000 (invalid_authorization_specification).

What the server log shows

FATAL:  no PostgreSQL user name specified in startup packet

Why PostgreSQL raises this — what the manual says

Section 54.2.1 Start-up:

“To begin a session, a frontend opens a connection to the server and sends a startup message.”

The protocol’s startup message must carry a user name to establish the session’s authorization identity. A startup packet without one cannot be authenticated, so PostgreSQL reports 28000.

Common causes

How to fix it

  1. Provide a user in the connection string/driver configuration.
  2. Fix the proxy/pooler so it forwards the user name.
  3. Verify the client speaks the PostgreSQL protocol correctly.

Related & next steps

Reference: PostgreSQL 18 Section 53.2 “Message Flow”.