我正在新安装的Ubuntu上设置一个Rails应用程序,并使用rakedb:create:all创建Postgres数据库。在databases.yml中,所有数据库的密码字段均为空。我正试图对从应用程序的生产部署中捕获的转储进行pg_restore,但不断有人提示我输入密码。我有一种感觉,这与pg_hba.conf文件中的设置有关,但我不记得我在以前的Ubuntu安装中是如何设置的。如何让Postgres信任本地连接的pg_restore?还是有什么不同的原因导致了这个问题?
为pg_hba.conf
中的local
连接设置trust
(如果要将postgresql用户名与unix用户名匹配,则设置peer
)。你的问题基本上已经回答了。
如果显式指定-h localhost
,那么您使用的是TCP/IP,因此您需要省略-h localhost
,使用-h /tmp
或unix_socket_directory
所在的任何位置,或者在pg_hba.conf
中为来自127.0.0.1/32
的host
连接设置trust
。
请参阅pg_hba.conf
和客户端身份验证。
另一种解决方案是将客户端计算机上的登录凭据存储在用户主目录中的.pgpass文件中:
localhost:*:数据库:用户名:密码
此文件的权限必须至少为0600,否则将被忽略。
http://www.postgresql.org/docs/9.2/interactive/libpq-pgpass.html