我得到了错误:

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时也不会显示。

知道我哪里错了吗?


当前回答

我也有同样的问题。

depa的解决方案是绝对正确的。

只要确保你有一个用户配置使用PostgreSQL。

检查文件:

$ ls /etc/postgresql/9.1/main/pg_hba.conf -l

这个文件的权限应该给你注册psql的用户。

进一步。如果你到现在还好…

按照@depa的指示更新。

i.e.

$ sudo nano /etc/postgresql/9.1/main/pg_hba.conf

然后做出改变。

其他回答

如果您试图在Cloud 9中定位此文件,您可以这样做

sudo vim /var/lib/pgsql9/data/pg_hba.conf

按I键编辑/插入,按ESC键3次,输入:wq保存文件并退出

如果你在使用rails时遇到了这个问题,并且你知道你已经创建了用户名和密码以及正确的权限,那么你只需要在你的数据库末尾添加以下内容。yml文件。

host: localhost

整个文件如下所示

development:
  adapter: postgresql
  encoding: unicode
  database: myapp_development
  pool: 5
  username: root
  password: admin
  host: localhost

你根本不需要修改pg_hba.conf文件。快乐的编码

请按照以下步骤操作

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它工作。

如果您有问题,您需要找到pg_hba.conf。命令如下:

查找/ -name 'pg_hba.conf' 2>/dev/null

然后修改配置文件:

Postgresql 9.3

Postgresql 9.4

下一步是:重新启动你的db实例:

Service postgresql-9.3 restart

如果您有任何问题,您需要重新设置密码:

修改用户密码为db_password