尝试为 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 并查看您是否为其他数据库添加了任何identtrust 规则;和这个比较一下。 【参考方案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 -ipsqlSELECT 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

默认情况下,md5METHOD 列中,但将所有这些替换为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 应用程序

有啥方法可以在 ROR 中导出(生成)可编辑的 PDF?

甚至通过 HTTP 在 RoR 中的会话 cookie 上设置“安全”标志

ALAssetsLibrary ALAssetsLibraryAccessUserDeniedError

如何在 Postgres 中将 url 编码的表情符号保存为文本(例如“%F0%9F%98%80”)? (罗尔)