我正在尝试运行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
之类的命令,我认为这是一种可能的解决方案。
对此问题有任何帮助,我现在真的很沮丧......
答案 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凭证。 不过,这不是一个很干净的解决方案。