Ответ 1
Я просто пытался подключиться неправильно. Здесь правильный путь:
psql -h localhost -U blog -d blog_development
Я создал такого пользователя:
create user blog with password 'blog';
Затем я сделал его владельцем базы данных:
alter database blog_development owner to blog;
Затем я попытался войти в систему, и он не работал:
$ psql -d blog_development -U blog -W
Password for user blog:
psql: FATAL: Ident authentication failed for user "blog"
Любая идея, почему?
Одна вещь, которую я пробовал, - это редактирование pg_hba.conf
76 # Database administrative login by UNIX sockets
77 local all postgres ident
78
79 # TYPE DATABASE USER CIDR-ADDRESS METHOD
80
81 # "local" is for Unix domain socket connections only
82 local all all ident
83 # IPv4 local connections:
84 host all all 127.0.0.1/32 md5
85 host blog_development blog 127.0.0.1/32 md5
86 # IPv6 local connections:
87 host all all ::1/128 md5
Линия 85 - это та, которую я добавил. После этого я перезапустил PostgreSQL, но ничего не изменил.
Я просто пытался подключиться неправильно. Здесь правильный путь:
psql -h localhost -U blog -d blog_development
psql использует локальный сокет по умолчанию (отметьте флаг -h у человека), который должен соответствовать строке 82 при входе в систему.
82 local all all ident
ident
нужен реальный пользователь в системе для проверки пароля. Таким образом, вы можете либо подключиться хостом, либо добавить пользователя, чтобы он соответствовал новой строке конфигурации.
Перед строкой 82 добавьте
local blog_development blog md5
и перезагрузите, или подключитесь с помощью -h localhost
.
Вы добавили пользователя в pg_hba.conf? Вот документация.
http://www.postgresql.org/docs/8.4/static/auth-pg-hba-conf.html
Я действительно не помню точный синтаксис, но вы должны добавить что-то вроде этого:
host blog_development blog 127.0.0.1/32 md5
Вам может потребоваться перезагрузить или перезагрузить сервер, чтобы pg_hba.conf перечитали.