连接到AWS RDS postgres数据库的nodejs错误

时间:2019-06-26 09:56:47

标签: node.js postgresql amazon-web-services amazon-rds

我正在尝试连接到我的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 个答案:

答案 0 :(得分:2)

RDS数据库用户名和密码不是您的AWS用户名和密码,它们是不同的身份。

在这种情况下,错误消息非常清楚:FATAL: password authentication failed for user "robert"

因此,Postgres RDS用户名或密码不正确。与RDS数据库的所有者联系,检查正确的凭据是什么。如果创建了RDS数据库,请确保在Postgres级别创建一个Robert用户。您可以参考此博客以获取更多详细信息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/