Windows Knex-错误:用户“的密码身份验证失败”;约书亚·里斯;

Windows Knex-错误:用户“的密码身份验证失败”;约书亚·里斯;,windows,postgresql,npm,knex.js,pg,Windows,Postgresql,Npm,Knex.js,Pg,我正在用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-prot

我正在用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)

错误:用户“Joshua Rieth”的密码身份验证失败
在Parser.parseErrorMessage(C:\Users\Joshua Rieth\Documents\Projects\Lambda\Labs\homerun be\node\u modules\pg protocol\dist\Parser.js:278:15)
位于Parser.handlePacket(C:\Users\Joshua Rieth\Documents\Projects\Lambda\Labs\homerun be\node\u modules\pg protocol\dist\Parser.js:126:29)
在Parser.parse(C:\Users\Joshua Rieth\Documents\Projects\Lambda\Labs\homerun be\node\u modules\pg protocol\dist\Parser.js:39:38)
在插座上。(C:\Users\Joshua Rieth\Documents\Projects\Lambda\Labs\homerun be\node\u modules\pg protocol\dist\index.js:8:42)
在Socket.emit(events.js:315:20)
在addChunk(_stream_readable.js:295:12)
在readableAddChunk(_stream_readable.js:271:9)
在Socket.Readable.push(_stream_Readable.js:212:10)
在TCP.onStreamRead(internal/stream_base_commons.js:186:23)
我假设这与我的用户名有关,但它应该是我在设置PostgreSQL时使用的默认
postges
用户。我还应该提到,用户和密码位于.env文件中

规格

  • PostgreSql 12
  • 视窗10
  • NPM 6.14.6
  • 第8.3.0页
  • knex 0.20.15

设置knex时,您需要提供用户名/密码,除非您希望以“当前操作系统用户”身份连接。您可以在多个地方设置凭据,因此如果您可以检查所有凭据(并通知我们:),那就太好了

一种方法是:

require('knex')({
  client: 'pg',
  connection: 'postgres://username:password@localhost:5432/dbname'
})
或者,您可以设置环境变量PGUSER和PGPASSWORD,Knex连接也会选择这些变量

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

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的东西:

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

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