Knex - ошибка: не удалось выполнить аутентификацию пароля для пользователя «Джошуа Рит» - PullRequest
0 голосов
/ 04 августа 2020

Я работаю над созданием моей PostgreSQL базы данных с помощью Knex, и я продолжаю получать эту ошибку при запуске 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)

Я предполагаю, что это связано с моим имя пользователя, но это должен быть пользователь по умолчанию postges, который я использовал при настройке PostgreSQL. Я также должен упомянуть, что пользователь и пароль находятся в файле .env.

Spe c

  • PostgreSql 12
  • Windows 10
  • NPM 6.14.6
  • pg 8.3.0
  • knex 0.20.15

1 Ответ

1 голос
/ 04 августа 2020

Когда вы настраиваете knex, вам необходимо указать имя пользователя / пароль, если вы не хотите подключиться как «текущий пользователь ОС». Есть несколько мест, где вы могли бы настроить учетные данные, поэтому было бы неплохо, если бы вы могли проверить их все (и сообщить нам :)).

Один из способов сделать это:

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

В качестве альтернативы вы можете настроить переменные среды PGUSER и PGPASSWORD, соединение Knex тоже их подхватит.

Ваш connection также может быть настроен с полной информацией, а не ссылкой: 1010 *

Чтобы исключить ваши имена пользователей / пароли из фактического кода, я настоятельно рекомендую вам использовать что-то вроде dotenv package: https://www.npmjs.com/package/dotenv

(NB: ниже не о ваша ошибка c, так как ваше имя пользователя указано неправильно) Еще одна вещь, которую я бы проверил на стороне Pg, - это то, что вы включили аутентификацию по паролю в своем pg_hba.conf. Метод md5 позволяет использовать аутентификацию на основе пароля-ha sh, что должно быть вам полезно. Должно получиться так:

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