我得到了错误:
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时也不会显示。
知道我哪里错了吗?
进入/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重启后不工作,请关闭终端并重新打开。
请按照以下步骤操作
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
现在应该没问题了。
如果您通过localhost(127.0.0.1)连接,则不应该遇到这个特定问题。我不会对pg_hba.conf做太多的改动,但我会调整你的连接字符串:
psql -U someuser -h 127.0.0.1 database
其中someuser是你连接的用户,database是你的用户有权限连接的数据库。
下面是我在Debian上设置postgres的方法:
http://www.postgresql.org/download/linux/debian/ (Wheezy 7.x)
as root …
root@www0:~# echo "deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main" >> /etc/apt/sources.list
root@www0:~# wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
root@www0:~# apt-get update
root@www0:~# apt-get install postgresql-9.4
root@www0:~# su - postgres
postgres@www0:~$ createuser --interactive -P someuser
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
postgres@www0:~$ createdb -O someuser database
postgres@www0:~$ psql -U someuser -h 127.0.0.1 database
享受吧!