尝试为 ror 应用程序设置 postgres,出现错误 - fe_sendauth:未提供密码
Posted
技术标签:
【中文标题】尝试为 ror 应用程序设置 postgres,出现错误 - fe_sendauth:未提供密码【英文标题】:Trying to set up postgres for ror app, getting error - fe_sendauth: no password supplied 【发布时间】:2012-09-09 05:53:00 【问题描述】:获取:
An error has occurred:
Error connecting to the server: fe_sendauth: no password supplied
database.yml
中的设置与其他机器上的应用设置相同。
如何进行设置,这样我就不需要硬编码密码了?
我可以使用 PgAdmin-III 查看数据库。
我宁愿没有database.yml
中的密码,因为使用此应用程序的其他机器没有/不需要它,所以这似乎与我的 Pg 安装有关。
【问题讨论】:
我想说您需要查看pg_hba.conf
并查看您是否为其他数据库添加了任何ident
或trust
规则;和这个比较一下。
【参考方案1】:
您需要更改您的更改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
请注意,trust
表示address
(在本例中为 localhost)上的任何人都可以作为列出的用户(或在本例中为他们选择的任何用户)进行连接。这实际上只适用于数据不重要的开发配置。 不要在生产中使用它。
【讨论】:
谢谢。不幸的是,我这样做并重新启动了 postgres,但它没有帮助。同样的错误。 @MichaelDurrant 确定您连接到正确的服务器并编辑正确的pg_hba.conf
?在 psql 中尝试SHOW hba_file;
以找到pg_hba.conf
。还要检查 PostgreSQL 服务器日志。
我必须将“PC”更改为“all”才能使其正常工作,否则感谢您的回答!
您可能需要重新加载配置:在 PGAdmin 中,右键单击“PostgreSQL X.Y”->“重新加载配置”。
这成功了!但我不得不重新启动 pg 服务。我用sudo -u postgres -i
psql
SELECT pg_reload_conf();
做到了。我在 psql 中使用SHOW hba_file;
命令找到了pg_hba.conf
。【参考方案2】:
@rodrigo-zurek 出现在现场;您必须更改pg_hba.conf
。只想为 OSX 用户添加这个答案,因为 pg_hba.conf
默认位于不同的位置。
sudo su - postgres
vim /Library/PostgreSQL/<YOUR_VERSION>/data/pg_hba.conf
默认情况下,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
然后,在 Applications/PostgreSQL 9.X 中打开 pgAdmin III,右键单击数据库(例如 PostgreSQL 9.4 (localhost)
),然后单击 Reload Configuration
。在此之后,我可以rake db:create
。
【讨论】:
你能告诉我如何编辑pg_hba.conf
并保存吗?我是 Mac 新手【参考方案3】:
未提供密码意味着您已将其设置为要求密码验证并且未提供密码。这是 9.0 的文档:http://www.postgresql.org/docs/9.0/static/auth-methods.html
请记住,在 9.1 中,本地身份验证已从“ident”更改为“peer”,以避免混淆。请参阅http://www.postgresql.org/docs/9.1/static/auth-methods.html
上的 9.1 文档另外请记住,这是一个有序的规则集,具有第一次匹配管理。此外,本地和本地主机是不同的。 Local 用于本地 UNIX 域套接字连接,而主机 localhost 用于到 localhost 的网络连接。因此,听起来您需要进行一些故障排除,但希望文档能提供帮助。
【讨论】:
【参考方案4】:#appveyor.yml
services: postgresql
test_script:
- SET PGUSER=postgres
- SET PGPASSWORD=Password12!
- PATH=C:\Program Files\PostgreSQL\9.6\bin\;%PATH%
【讨论】:
以上是关于尝试为 ror 应用程序设置 postgres,出现错误 - fe_sendauth:未提供密码的主要内容,如果未能解决你的问题,请参考以下文章
使用 SQLite 3 将 RoR 应用程序部署到 Heroku 失败
使用 puma nginx 和 capistrano 设置 ROR 应用程序
甚至通过 HTTP 在 RoR 中的会话 cookie 上设置“安全”标志