node.js - 耐克斯 :Error Pool2 - error: password authentication failed for user "username" (Not using UNIX account)

标签 node.js postgresql pg knex.js

问题出现在以下命令中:

knex --knexfile config/db/knexfile.js migrate:latest

我收到以下错误:

Knex:warning - Pool2 - Error: Pool was destroyed
Knex:Error Pool2 - error: password authentication failed for user "dennis"
Knex:Error Pool2 - error: password authentication failed for user "dennis"
Error: Pool was destroyed
    at Pool._destroyPool (/home/dennis/projects/amgen-sites/data-api/node_modules/pool2/lib/pool.js:560:20)
    at Pool.<anonymous> (/home/dennis/projects/amgen-sites/data-api/node_modules/pool2/lib/pool.js:474:18)
    at Pool.<anonymous> (/home/dennis/projects/amgen-sites/data-api/node_modules/pool2/lib/pool.js:517:17)
    at tryCatcher (/home/dennis/projects/amgen-sites/data-api/node_modules/knex/node_modules/bluebird/js/release/util.js:16:23)
    at Promise.errorAdapter [as _rejectionHandler0] (/home/dennis/projects/amgen-sites/data-api/node_modules/knex/node_modules/bluebird/js/release/nodeify.js:35:34)
    at Promise._settlePromise (/home/dennis/projects/amgen-sites/data-api/node_modules/knex/node_modules/bluebird/js/release/promise.js:558:21)
    at Promise._settlePromise0 (/home/dennis/projects/amgen-sites/data-api/node_modules/knex/node_modules/bluebird/js/release/promise.js:606:10)
    at Promise._settlePromises (/home/dennis/projects/amgen-sites/data-api/node_modules/knex/node_modules/bluebird/js/release/promise.js:681:18)
    at Async._drainQueue (/home/dennis/projects/amgen-sites/data-api/node_modules/knex/node_modules/bluebird/js/release/async.js:138:16)
    at Async._drainQueues (/home/dennis/projects/amgen-sites/data-api/node_modules/knex/node_modules/bluebird/js/release/async.js:148:10)
    at Immediate.Async.drainQueues (/home/dennis/projects/amgen-sites/data-api/node_modules/knex/node_modules/bluebird/js/release/async.js:17:14)
    at runCallback (timers.js:570:20)
    at tryOnImmediate (timers.js:550:5)
    at processImmediate [as _immediateCallback] (timers.js:529:5)

它似乎没有使用我的 UNIX 帐户,而是尝试使用用户名/密码进行身份验证。

我尝试了以下解决方案:

  • 更新pg到最新
  • knex更新到最新
  • 替换要信任的方法:

    # IPv4 local connections: host all all 127.0.0.1/32 信任

  • 将连接字符串从[db name]替换为[postgres://[db name]:

    connection: {
      database: 'postgres://data-api-dev',
      user:     '',
      password: ''
    },
    

如何让它使用我的 UNIX 帐户?

我在 Ubuntu 16.04 上使用 Node v6.3.1。

这是我安装的包:

├── bluebird@2.10.2
├── body-parser@1.15.2
├── bookshelf@0.10.0
├── chai@3.5.0
├── chai-as-promised@5.3.0
├── colors@1.1.2
├── convict@1.4.0
├── cors@2.7.1
├── express@4.14.0
├── gulp@4.0.0-alpha.2 (git://github.com/gulpjs/gulp.git#d8f5c90a0622d19ef1943a2a3d02dc50e3c853e7)
├── gulp-exit@0.0.2
├── gulp-mocha@2.2.0
├── gulp-nodemon@2.1.0
├── gulp-using@0.1.0
├── jsonwebtoken@5.7.0
├── knex@0.11.10
├── lodash@3.10.1
├── pg@6.1.0
├── request-promise@0.4.3
├── sinon@1.17.5
├── sinon-as-promised@4.0.2
├── sinon-chai@2.8.0
├── supertest@1.2.0
└── validator@4.9.0

最佳答案

事实证明,将方法从 md5 重命名为 trust 是正确的解决方案。修改后忘记重启postgresql服务,所以第一次没有成功。

关于node.js - 耐克斯 :Error Pool2 - error: password authentication failed for user "username" (Not using UNIX account),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39060780/

相关文章:

node.js - 带有 node js pg 驱动程序的 CockroachDB

ruby - PG gem 以随机顺序返回列

javascript - 如何使用 Bluebird 错误处理程序?

node.js - Mongoose 按子值排序

sql - Postgresql ORDER BY - 选择正确的索引

django - postgreSQL.app : create database

ruby - 来自 Ruby 的长期运行的 Redshift 事务

node.js - 如何将TVP中的缓冲区数据从node.js传递到lambda中的sql服务器?

node.js - 如何获取Alexa设备的时区或本地时间

linux - 用户 Centos 8 Postgresql12 的身份验证失败