【问题标题】:Can't authenticate user with Knex.js migrate:latest in Node无法使用 Knex.js 迁移验证用户:Node 中的最新版本
【发布时间】:2020-08-03 16:37:33
【问题描述】:

问题:

相关信息:Windows 10、Node、knex、PostgreSQL

我正在尝试运行 knex CLI 命令 migrate:latest from cmd, knex migrate:latest --env development

我收到“错误:用户的密码验证失败”

我的第一个问题是指定的用户 - 在我的 knexfile.js 配置文件中,我正在导出具有已定义连接的开发对象,其中定义了我的所有环境变量。

  development: {
    client: 'pg',
    connection: {
      host: "localhost",
      port: process.env.DB_PORT,
      username: process.env.DB_USER,
      password: process.env.DB_PW,
      database: process.env.DB_NAME
    }
  }

因此,尽管我试图以“postgres”身份登录数据库,但 knex 正试图从相关的错误消息中以 Windows 用户身份登录,这是我个人计算机上的唯一帐户。我以该用户身份登录,使用此用户帐户安装 PostgreSQL,并使用此用户初始化数据库。

使用 psql,我可以使用我的 knex 配置中指定的密码登录到我的 knex 配置中指定的数据库。事实上,我为所有用户使用相同的密码来减少问题中的变量数量。

除了尝试以这种方式解决问题之外,我将 pg_hba.conf 文件中的所有身份验证设置都设置为“信任” - 但这也不能解决问题。

【问题讨论】:

    标签: node.js postgresql psql knex.js koa


    【解决方案1】:

    尝试将用户名和密码以及数据库名称硬编码到 knexfile,而不是使用 process.env.XXXX,然后重试。

    听起来您的环境变量没有正确传递给节点。

    【讨论】:

    • 哇——非常感谢。很简单。所以现在我遇到了一个不同的问题——但知道实际问题是什么总是很高兴。最好的问候。
    • 这只是将一个问题换成另一个问题。很适合隔离我猜的问题,但不是真正的解决方案。
    • 是的,不是真正的解决方案。问题是缺少能够提供任何解决方案的信息。使用process.env.ENV_VAR 传递环境变量应该可以正常工作,就像原始帖子中提到的那样。
    猜你喜欢
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 2019-08-27
    相关资源
    最近更新 更多