我得到了错误:
FATAL: Peer authentication failed for user "postgres"
当我尝试让postgres与Rails一起工作时。
这是pg_hba.conf,我的数据库。Yml,以及完整跟踪的转储。
我在pg_hba中将身份验证更改为md5,并尝试了不同的方法,但似乎都不起作用。
我还尝试按照Rails 3.2创建一个新用户和数据库,FATAL: Peer authentication failed for user (PG::Error)
但是它们不会在pgadmin上显示,甚至当我运行sudo -u postgres psql -l时也不会显示。
知道我哪里错了吗?
请按照以下步骤操作
1).首先,进入/etc/postgresql/{你的pg版本}/main目录。
我的版本是10
cd /etc/postgresql/10/main
2).这里驻留pg_hba.conf文件需要在这里做一些更改,你可能需要
Sudo访问此。
sudo nano pg_hba.conf
3).向下滚动文件,直到你找到这个-
# Database administrative login by Unix domain socket
local all postgres peer
4).此处修改peer为md5,如下所示。
# Database administrative login by Unix domain socket
local all all md5
peer表示它信任UNIX用户的真实性,因此不信任
提示输入密码。Md5意味着它总是会要求输入密码,
并在MD5散列后进行验证。
5).现在保存文件并重新启动Postgres服务器。
sudo service postgresql restart
现在应该没问题了。
进入/etc/postgresql/9。打开pg_hba.conf文件
在我的例子中:
$> sudo nano /etc/postgresql/9.3/main/pg_hba.conf
用md5代替peer
所以这将被更改为:
通过Unix域套接字登录数据库
本地所有postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
这样的:
通过Unix域套接字登录数据库
本地所有postgres md5
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
然后重启pg服务器:
$> sudo service postgresql restart
下面是用于连接postgres的方法列表:
# METHOD can be "trust", "reject", "md5", "password", "gss", "sspi",
# "krb5", "ident", "peer", "pam", "ldap", "radius" or "cert". Note that
# "password" sends passwords in clear text; "md5" is preferred since
# it sends encrypted passwords.
注意:如果你还没有创建postgres用户。创建它,现在您可以使用该用户凭证访问postgres服务器。
提示:如果postgres重启后不工作,请关闭终端并重新打开。