Ваше соединение не удалось, потому что по умолчанию psqlподключается через сокеты UNIX с использованием peerаутентификации, для которой у текущего пользователя UNIX должно быть то же имя, что и у пользователя psql. Таким образом, вам придется создать пользователя UNIX, devа затем войти в систему devили использовать sudo -u dev psql test_developmentдля доступа к базе данных (и неpsql должен запрашивать пароль).
Если вы не можете или не хотите создавать пользователя UNIX, например, если вы просто хотите подключиться к своей базе данных для специальных запросов, принудительное подключение через сокет psql --host=localhost --dbname=test_development --username=dev(как указано в ответе @meyerson) решит вашу непосредственную проблему.
Но если вы намереваетесь принудительно установить аутентификацию по паролю через сокеты Unix вместо однорангового метода, попробуйте изменить следующую pg_hba.conf* строку:
из
# TYPE DATABASE USER ADDRESS METHOD
local all all peer
в
# TYPE DATABASE USER ADDRESS METHOD
local all all md5
peerозначает, что он будет доверять личности (подлинности) пользователя UNIX. Так что не спрашиваю пароль.
md5означает, что он всегда будет запрашивать пароль и проверять его после хеширования MD5.
Конечно, вы также можете создавать более конкретные правила для конкретной базы данных или пользователя, при этом некоторые пользователи peer а другие требуют пароли.
После изменения, pg_hba.confесли PostgreSQL работает, вам нужно перечитать конфигурацию путем перезагрузки ( pg_ctl reload) или перезапуска ( sudo service postgresql restart).
* Файл pg_hba.confскорее всего будет в/etc/postgresql/9.x/main/pg_hba.conf
Отредактировано: замечания @Chloe, @JavierEH, @Jonas Eicher, @fccoelho, @Joanis, @Uphill_What комментарии включены в ответ.