PostgreSQL fe_sendauth:没有提供密码

时间:2014-12-11 09:59:25

标签: postgresql unix ansible

我知道这里有成千上万的像这样的任务,但我已经看到了所有这些,我仍然无法处理我的问题。

我正在使用ansible做所有事情,所以它非常自动化,但无论如何,这是我的文件:

的pg_hba.conf

local   all             all                                     trust
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5
host    all             all             10.11.12.0/24           md5

的database.yml

production:
  database: my_db
  adapter: postgresql
  host: localhost
  username: deploy
  encoding: unicode
  min_messages: WARNING
  template: template0

我的系统中创建了一个deploy用户(以及没有设置密码的postgres用户)。现在,虽然我完全能够使用psql -d my_db(在服务器上)从bash登录postgres,但我无法使用我的rails应用程序连接到数据库。运行rake db:migrateMigration给了我

PG::ConnectionBad: fe_sendauth: no password supplied

我很擅长开支,而且从前天早上起我就是在与这个问题作斗争,而且它仍然存在,所以如果有人可以帮助我的话,我会感激不尽。

2 个答案:

答案 0 :(得分:13)

psql正在使用本地套接字连接,rails通过TCP / IP使用localhost。本地是可信的,localhost需要密码(使用md5)。您可以为rails用户设置pgpass文件:http://www.postgresql.org/docs/current/static/libpq-pgpass.html

答案 1 :(得分:0)

在C中你可以这样做,我甚至不知道Rails是什么

conninfo = "hostaddr = 127.0.0.1 dbname = bitcoin user = alan password = mypass";
conn = PQconnectdb(conninfo);

我有完全相同的错误消息。