From 9.4 psql has slightly changed it's behavior.
Pre 9.4:
psql --version
psql (PostgreSQL) 9.3.4
psql -U '' test
FATAL: no PostgreSQL user name specified in startup packet
psql: FATAL: no PostgreSQL user name specified in startup packet
9.4:
psql -U '' test
psql (9.4beta1, server 9.3.4)
Type "help" for help.
test=#
Please note that this behavior change was actually brought by libpq:
Have libpq's PQconnectdbParams() and PQpingParams() functions process zero-length strings as defaults (Adrian
Vondendriesch)
Previously, these functions treated zero-length string values as defaults only in some cases.
It's not very clear that username is affected by this change here. I
just want to remind hackers before you get inquries on this from
PostgreSQL users.
Best regards,
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese:http://www.sraoss.co.jp