Ваше соединение не удалось, потому что по умолчанию 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 комментарии включены в ответ.