我创建了一个这样的用户:
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,但它似乎没有改变任何东西。
答案 0 :(得分:34)
我只是想以错误的方式连接。这是正确的方式:
psql -h localhost -U blog -d blog_development
答案 1 :(得分:5)
psql默认使用本地套接字(在man中检出-h标志) - 当你登录时它应匹配第82行。
82本地所有身份
ident
需要系统中的真实用户检查密码。因此,您可以通过主机连接或添加用户,以便它与您的新配置行匹配。
答案 2 :(得分:4)
在第82行之前,添加
local blog_development blog md5
并重新加载,或使用-h localhost
进行连接。
答案 3 :(得分:1)
您是否已将用户添加到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。