#postgresql #ubuntu-18.04 #postgresql-12 #mikro-orm
#postgresql #ubuntu-18.04 #postgresql-12 #mikro-orm
Вопрос:
Я пытаюсь написать код в соответствии с этим руководством по React GraphQL TypeScript
Проект использует MikroOrm для связи с базой данных PostgreSQL. У меня установлен PostgreSQL (12.4) на моем Ubuntu 18.04, создан пользователь «postgres», и я могу войти в систему с пользователем и запустить psql
без каких-либо проблем. Однако, когда я начинаю использовать такие mikro-orm
команды, как npx mikro-orm migration:create
(временная метка видео), я получаю следующую ошибку:
error: password authentication failed for user "postgres"
at Parser.parseErrorMessage (/home/<username>/newstack/node_modules/pg-protocol/src/parser.ts:357:11)
at Parser.handlePacket (/home/<username>/newstack/node_modules/pg-protocol/src/parser.ts:186:21)
at Parser.parse (/home/<username>/newstack/node_modules/pg-protocol/src/parser.ts:101:30)
at Socket.<anonymous> (/home/<username>/newstack/node_modules/pg-protocol/src/index.ts:7:48)
at Socket.emit (events.js:315:20)
at Socket.EventEmitter.emit (domain.js:483:12)
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) {
length: 104,
severity: 'FATAL',
code: '28P01',
detail: undefined,
hint: undefined,
position: undefined,
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'auth.c',
line: '333',
routine: 'auth_failed'
}
Вот ошибка в файле журнала PostgreSQL:
2020-08-28 01:45:18.218 EEST [23088] postgres@newstack FATAL: password authentication failed for user "postgres"
2020-08-28 01:45:18.218 EEST [23088] postgres@newstack DETAIL: Password does not match for user "postgres".
Connection matched pg_hba.conf line 96: "host all all 127.0.0.1/32 md5"
И вот мой pg_hba.conf:
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
local all all peer
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
local replication all peer
host replication all 127.0.0.1/32 md5
host replication all ::1/128 md5
Я понял, что если бы соединение было локальным, то для него не требовался бы пароль, но почему он не использует локальный сокет? Если это невозможно изменить, то как я могу предоставить MikroOrm свои учетные данные базы данных?
Ответ №1:
Измените «md5» на «trust» следующим образом:
local all all peer
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
local replication all peer
host replication all 127.0.0.1/32 md5
host replication all ::1/128 md5
Ответ №2:
Для меня это сработало после того, как я добавил
clientUrl: 'http://localhost:5433'
user: 'postgres',
password: <user pasword for postgres user>
в объекте параметров
Комментарии:
1. Я попытался добавить это в конфигурацию (mikro-orm.config.ts в видео), но это все еще не работает. Я знаю, что место было правильным, потому что изменение номера порта приводит к другой ошибке. Я также пытался изменить пароль пользователя postgres с помощью
sudo passwd postgres
.
Ответ №3:
Это решение сработало для меня. Добавьте user
и password
реквизиты в конфигурацию mikro-orm:
dbName: "lireddit",
user: "<user_name>",
password: "<password>",
Ответ №4:
Убедитесь, что вы установили ts-node как devDep
npm i -D ts-node
и поместите в файл mikro-orm.config.ts имя пользователя и пароль postgres в качестве свойств