Diagnostic Queries
Symptoms
A connection’s startup packet did not specify a PostgreSQL user name. PostgreSQL rejects it with SQLSTATE 28000 (invalid_authorization_specification).
- The startup packet omitted the user.
- Usually a malformed client or proxy.
- A user name is mandatory to connect.
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
- A misconfigured client/driver not sending a user.
- A proxy/pooler mangling the startup packet.
- A non-PostgreSQL client speaking the protocol incorrectly.
How to fix it
- Provide a user in the connection string/driver configuration.
- Fix the proxy/pooler so it forwards the user name.
- Verify the client speaks the PostgreSQL protocol correctly.
Related & next steps
Reference: PostgreSQL 18 Section 53.2 “Message Flow”.
Thanks — noted. This helps keep the database accurate.