heroku pg:拉密码验证失败

时间:2014-01-19 17:37:56

标签: postgresql authentication heroku

我正在尝试运行heroku pg:pull命令,但我似乎无法获得令人惊讶的神秘认证过程。

我正在运行的命令:

> heroku pg:pull app_name::RED localdb

然后我得到一个密码提示,我不能,因为我的生活,弄清楚。经过2次猜测后,我得到password authentication failed for user "Hanan",就是这样。

我尝试了Heroku的密码,我的Windows帐户密码,我使用的每个密码,但没有任何反应。我查了一下,“Hanan”不是Postgresql中的一个角色,所以试图通过psql更改密码不起作用。我通过其他角色登录Postgresql没有问题,但这是“默认”登录过程,我似乎无法破解。

此外,由于我正在使用Windows,我不确定如何运行sudo -u postgres psql之类的命令,我认为这是一种可能的解决方案。

对此问题有任何帮助,我现在真的很沮丧......

5 个答案:

答案 0 :(得分:9)

显然可以设置环境变量PGUSER和PGPASSWORD,如here所述。

但是,这在给定语法中的窗口上不起作用。要在Windows上执行此操作,请执行以下操作:

  

SET PGUSER = [pg_username]

     

SET PGPASSWORD = [pg_password]

进入这两行后,Postgres将使用给定的身份验证信息登录,而不是尝试使用Windows用户名登录

答案 1 :(得分:7)

我在运行heroku pg:pull时遇到了很多问题。在我的情况下,问题是pg:pull命令仅在我的本地PostgreSQL服务器设置了密码时才有效。

要设置密码,请运行psql localdb并执行此SQL:

ALTER USER my_user_name with password 'my_new_password';

(您无需一直要求使用此密码。运行psql localdb并查看是否提示您;在我的情况下,我仍然可以登录到psql而不是密码。)

现在运行heroku pg:pull --app my_heroku_app POSTGRESQL_COLOR localdb,并在出现提示时输入新密码(两次)。

答案 2 :(得分:1)

我正在使用Windows 10(64位),Powershell,并且必须使用以下命令来正确设置本地PostgreSQL环境变量:

C:\> $Env:PGUSER="[pg_username]"  
C:\> $Env:PGPASSWORD="[pg_password]"  

要验证这些设置是否正确,请使用以下命令列出所有本地环境变量:

C:\> Get-ChildItem Env: 

完成此操作后,我可以运行heroku pg:pull,而无需提示输入密码。

答案 3 :(得分:1)

之前的答案对我不起作用或不符合我的喜好,所以我一直在寻找。感谢 Rayz 在这篇博文 How to add a user to PostgreSQL in Windows? 上提供的答案,我能够为 Windows powershell 设计出这种衬垫。

 & { $env:PGUSER="username";$env:PGPASSWORD="password"; heroku pg:push local-db DATABASE_URL --app heroku-app}

您显然必须将变量作为由分号分隔的列表传递,并用大括号括起来,大括号前面是与号。您的功能 (heroku pg:pull/ pg:push/...) 必须是列表的成员。在我目前的测试中,它可以在 powershell 中使用 pg:push 并且大括号内的项目顺序无关紧要。

答案 4 :(得分:0)

我懒得找出如何更改heroku使用的凭据。 SET PGUSER和SET PASSWORD对我不起作用,我所做的是: 错误说“ janbr”的凭据无效,所以我在本地数据库中创建了具有很多特权的用户。我将DBeaver用于具有postgres凭证的postgres凭证。 不过,这不是一个很干净的解决方案。