【问题标题】:Knex - error: password authentication failed for user "Joshua Rieth"Knex - 错误:用户“Joshua Rieth”的密码验证失败
【发布时间】:2020-08-04 00:47:04
【问题描述】:

我正在使用 Knex 构建我的 PostgreSQL 数据库,当我运行 knex migrate:latest 时不断收到此错误。

error: password authentication failed for user "Joshua Rieth"
    at Parser.parseErrorMessage (C:\Users\Joshua Rieth\Documents\Projects\Lambda\Labs\homerun-be\node_modules\pg-protocol\dist\parser.js:278:15)
    at Parser.handlePacket (C:\Users\Joshua Rieth\Documents\Projects\Lambda\Labs\homerun-be\node_modules\pg-protocol\dist\parser.js:126:29)
    at Parser.parse (C:\Users\Joshua Rieth\Documents\Projects\Lambda\Labs\homerun-be\node_modules\pg-protocol\dist\parser.js:39:38)
    at Socket.<anonymous> (C:\Users\Joshua Rieth\Documents\Projects\Lambda\Labs\homerun-be\node_modules\pg-protocol\dist\index.js:8:42)
    at Socket.emit (events.js:315:20)
    at addChunk (_stream_readable.js:295:12)
    at readableAddChunk (_stream_readable.js:271:9)
    at Socket.Readable.push (_stream_readable.js:212:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:186:23)

我假设这与我的用户名有关,但它应该是我在设置 PostgreSQL 时使用的默认 postges 用户。我还应该提到用户和密码在 .env 文件中。

规格

  • PostgreSql 12
  • Windows 10
  • NPM 6.14.6
  • 第 8.3.0 页
  • knex 0.20.15

【问题讨论】:

    标签: windows postgresql npm knex.js pg


    【解决方案1】:

    设置 knex 时,您需要提供用户名/密码,除非您想以“当前操作系统用户”身份连接。您可以在多个地方设置凭据,因此如果您可以全部检查它们会很好(并通知我们:))。

    这样做的一种方法是:

    require('knex')({
      client: 'pg',
      connection: 'postgres://username:password@localhost:5432/dbname'
    })
    

    或者,您可以设置环境变量 PGUSER 和 PGPASSWORD,Knex 连接也会选择它们。

    您的connection 也可以配置完整的详细信息而不是链接:

    var knex = require('knex')({
      client: 'pg',
      version: '12.0',
      connection: {
        host : '127.0.0.1',
        user : 'your_database_user',
        password : 'your_database_password',
        database : 'myapp_test'
      }
    });
    

    要从实际代码中排除您的用户名/密码,我强烈建议您使用类似dotenv package: https://www.npmjs.com/package/dotenv

    (注意:以下不是您的具体错误,因为您的用户名未正确指定)我要在 Pg 方面检查的另一件事是您已在 pg_hba.conf 中启用密码身份验证。 md5 方法允许基于密码哈希的身份验证,这应该对您有好处。它应该是这样的:

    # TYPE  DATABASE    USER    CIDR-ADDRESS          METHOD
    host    all         all     123.123.123.123/32    md5
    

    【讨论】:

      猜你喜欢
      • 2019-11-18
      • 1970-01-01
      • 2016-08-30
      • 1970-01-01
      • 2021-03-23
      • 2021-06-16
      • 2017-11-14
      • 2011-12-03
      相关资源
      最近更新 更多