【问题标题】:heroku pg:pull password authentication failedheroku pg:pull 密码认证失败
【发布时间】:2014-02-08 19:25:55
【问题描述】:

我正在尝试运行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 这样的命令,我认为这是一个可能的解决方案。

将感谢有关此问题的任何帮助,我现在真的很沮丧...

【问题讨论】:

  • 遇到同样的问题...尚未找到解决方案。
  • 虽然heroku pg:pull 很简单,只要它不工作,我正在尝试使用下面链接中描述的方法将数据库拉到本地安装的postgres,然后使用水龙头服务器填充我的应用程序的数据库。这在我的 mac-book 上工作,但是,你可以猜到,不在我的电脑上:/ 链接:stackoverflow.com/questions/5649868/…

标签: postgresql authentication heroku


【解决方案1】:

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

但是,这不适用于给定语法的窗口。要在 Windows 上执行此操作,请运行以下命令:

SET PGUSER=[pg_username]

SET PGPASSWORD=[pg_password]

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

【讨论】:

  • 像魅力一样工作。谢谢!
  • 很好的答案。 heroku pg:pull --help 应包含此信息。
【解决方案2】:

我在运行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,并在出现提示时输入您的新密码(两次)。

【讨论】:

  • 难以置信!出于某种原因,这在我的本地笔记本电脑上不是必需的,但它在我的桌面上......你救了我!
  • @bkunzi01:这取决于 /etc/postgresql//main/pg_hba.conf 文件中的身份验证方法。将 local/all/all 从 md5 更改为 peer(并重新启动 postgres 集群或整个服务),密码提示将消失。在我的情况下,这是必要的,因为(使用 md5 和当前用户 postgres 密码的正确答案)任务开始,但一分钟后因身份验证失败而挂起。这可能是错误。但是通过对等身份验证,这是可行的。 (我认为对等身份验证仅适用于 linux)
【解决方案3】:

我懒得去了解如何更改 heroku 使用的凭据。 SET PGUSER 和 SET PASSWORD 对我不起作用,我所做的是: 错误说“janbr”的凭据无效,所以我在本地数据库中创建了具有很多特权的用户。我使用 DBeaver 和我在安装 postgres 时设置的 postgres 凭据。 虽然不是一个非常干净的解决方案。

【讨论】:

    【解决方案4】:

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

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

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

    C:\> Get-ChildItem Env: 
    

    执行此操作后,我能够运行heroku pg:pull 而不会提示输入密码。

    【讨论】:

      【解决方案5】:

      以前的答案对我不起作用或不符合我的喜好,所以我一直在寻找。感谢 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/...)必须是列表的成员。在我目前的测试中,它可以在带有 pg:push 的 powershell 中工作,并且大括号内的项目顺序无关紧要。

      【讨论】:

      • 很好,我实际上使用的是标准命令提示符,但这对 powershell 用户应该有帮助。谢谢
      【解决方案6】:

      使用 Windows 10,我在这里尝试了所有解决方案,但没有任何运气。

      最终对我有用的是进入系统属性并在那里编辑我的环境变量。我将这些添加到我的系统变量中,重新启动了我的终端,然后就可以运行了。需要注意的一点是,我首先尝试将用户和密码添加到我的用户变量中,但没有成功。

      PGUSER YourPostgresUser 
      PGPASSWORD YourPassword
      

      在更新我的变量以检查它们是否已添加后,我还运行了 Get-ChildItem Env:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-11
        • 2021-01-03
        • 1970-01-01
        • 1970-01-01
        • 2017-05-02
        • 2020-07-14
        • 1970-01-01
        • 2017-02-06
        相关资源
        最近更新 更多