Ошибка nodejs при подключении к базе данных AWS RDS postgres - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь подключиться к моей базе данных postgresql. Я использую библиотеку pg , мой код выглядит следующим образом

const dbcreds = require("./dbconfig.json")
const { Pool } = require('pg')

pushToDB =  async function (shiftData) {
    const pool = await new Pool({
        host: dbcreds.dbhost,
        user: dbcreds.user, 
        password: dbcreds.dbpassword,
        database: dbcreds.dbname,
    })

    await pool.connect()
    await pool.query('INSERT into working (shift_id, client_id, organisational_unit, discipline, site, starts_at, ends_at, status) VALUES($1, $2, $3) returning id', ['shift id', 'client id', 'third'], function (err, result) {
        done();
        if (err) {
            return console.error('error running query', err);
        }
        res.send(result);
    });
}

Проверка журналов в AWS показывает мне это после запуска моегокод, я думаю, это может быть связано с ошибками разрешения AWS, но я не уверен, что именно мне нужно изменить:

2019-06-26 09:09:46 UTC:46-247-17-105.fluidata.co.uk(50780):robert@sstreamdb:[9627]:FATAL: password authentication failed for user "robert"
2019-06-26 09:09:46 UTC:46-247-17-105.fluidata.co.uk(50780):robert@sstreamdb:[9627]:DETAIL: Role "robert" does not exist.
Connection matched pg_hba.conf line 13: "host   all all 0.0.0.0/0   md5"
----------------------- END OF LOG ----------------------

1 Ответ

2 голосов
/ 26 июня 2019

Имя пользователя и пароль базы данных RDS - это не ваши имя пользователя и пароль AWS, это разные личности.

В этом случае сообщение об ошибке довольно ясно: FATAL: password authentication failed for user "robert"

Таким образом, либо имя пользователя, либо пароль Postgres RDS неверны. Уточните у владельца базы данных RDS правильные учетные данные. Если вы создали базу данных RDS, обязательно создайте пользователя Robert на уровне Postgres. Вы можете обратиться к этому блогу для получения более подробной информации https://aws.amazon.com/blogs/database/managing-postgresql-users-and-roles/.

Наконец, когда вы это заработаете, мы настоятельно не рекомендуем встраивать учетные данные базы данных в ваше приложение. Я бы предложил вам вместо этого использовать AWS Secret Manager и переписать свой код, чтобы получить секрет во время выполнения. Вы найдете пример здесь: https://aws.amazon.com/blogs/security/rotate-amazon-rds-database-credentials-automatically-with-aws-secrets-manager/

...