试图为ror app设置postgres,收到错误 - fe_sendauth:没有提供密码

Mic*_*ant 26 ruby passwords postgresql ruby-on-rails pg

获得:

An error has occurred:

Error connecting to the server: fe_sendauth: no password supplied
Run Code Online (Sandbox Code Playgroud)

设置database.yml与其他计算机上的应用程序设置相同.

如何设置以便我不需要硬编码的密码?

我可以使用PgAdmin-III查看db ok.

我宁愿没有密码,database.yml因为使用这个应用程序的其他机器没有/需要它,所以它似乎可能与我的Pg安装有关.

Rod*_*rek 62

你需要改变你的改变pg_hba.conf.这是我的一个例子:

pg_hba.conf:

TYPE  DATABASE        USER            ADDRESS                 METHOD

host    all             all             127.0.0.1/32            trust

host    all             PC             127.0.0.1/32            trust

host    all             all             ::1/128                 trust
Run Code Online (Sandbox Code Playgroud)

请注意,这trust意味着任何人address(在本例中为localhost)都可以作为列出的用户(或者在这种情况下是他们选择的任何用户)进行连接.这实际上仅适用于具有不重要数据的开发配置.不要在生产中使用它.

  • @MichaelDurrant当然你连接到正确的服务器并编辑正确的`pg_hba.conf`?在psql中尝试`SHOW hba_file;`来查找`pg_hba.conf`.还要检查PostgreSQL服务器日志. (7认同)
  • 谢谢.不幸的是我做了这个并重新启动postgres但它没有帮助.同样的错误. (3认同)

Jac*_*ack 10

@ rodrigo-zurek是当场的; 你必须改变pg_hba.conf.只想为OSX用户添加此答案,因为pg_hba.conf默认情况下它位于不同的位置.

sudo su - postgres
vim /Library/PostgreSQL/<YOUR_VERSION>/data/pg_hba.conf
Run Code Online (Sandbox Code Playgroud)

默认将md5在列中METHOD,但替换所有这些trust:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
Run Code Online (Sandbox Code Playgroud)

然后,在Applications/PostgreSQL 9.X中打开pgAdmin III,右键单击数据库(例如PostgreSQL 9.4 (localhost)),然后单击Reload Configuration.在此之后,我能够rake db:create.