Порт нужен всегда (ну вот так TCP работает, ничего не поделаешь).
Если используете стандартный порт, то его можно не указывать в строке подключения, обычно.
ну почти, в линуксах можно подключаться к postgresql через unix socket
Dr. Bacon, замечание верно ровно наполовину. Да, для абстрактного unix sock нет номера порта. Но postgresql при старте делает unix sock с указанием номера порта в имени файла. Всегда. А потому - номер порта использует ровно так же, как и для tcp.
Из-за этого postgresql имеет настройку unix_socket_directories именно про директорию куда создавать сокет, но не для имени файла в этой директории.