NodeJs postgresql 连接失败

Vin*_*ick 5 postgresql amazon-rds node.js pg

  • 我尝试从 nodeJs 连接到 rds postgresql版本 12,如下所述。它工作完全正常,没有任何问题。

    const config = {
    
        user: process.env.PG_DB_USERNAME,
        password: process.env.PG_DB_PASSWORD,
        database: process.env.PG_DB_NAME,
        host: process.env.PG_DB_HOST,
        port: process.env.PG_DB_PORT,
     }
       const pool = new Pool(config)
    
    Run Code Online (Sandbox Code Playgroud)

当我们使用 postgresql 15.2 版 从节点 Js 连接时,我们最终遇到了以下错误。

错误

{"length":181,"name":"error","severity":"FATAL","code":"28000","file":"auth.c","line":"543","routine":"ClientAuthentication","level":"error","timestamp":"2023-06-19T14:13:33.294Z"}

[ERROR] error: no pg_hba.conf entry for host "XXXXX", user "test", database "testdb", no encryption

at Parser.parseErrorMessage (/usr/src/app/node_modules/pg-protocol/dist/parser.js:287:98)
at Parser.handlePacket (/usr/src/app/node_modules/pg-protocol/dist/parser.js:126:29)
at Parser.parse (/usr/src/app/node_modules/pg-protocol/dist/parser.js:39:38)
at Socket.<anonymous> (/usr/src/app/node_modules/pg-protocol/dist/index.js:11:42)
at Socket.emit (node:events:526:28)
at Socket.emit (node:domain:475:12)
at addChunk (node:internal/streams/readable:315:12)
at readableAddChunk (node:internal/streams/readable:289:9)
at Socket.Readable.push (node:internal/streams/readable:228:10)
at TCP.onStreamRead (node:internal/stream_base_commons:190:23)
at TCP.callbackTrampoline (node:internal/async_hooks:130:17)
Run Code Online (Sandbox Code Playgroud)

我尝试按照各种堆栈溢出链接中的建议传递以下参数,但以相同的错误结束。

我们尝试按照以下链接中的建议部署代码,但问题尚未解决。

参考:Node.js、PostgreSQL 错误:主机没有 pg_hba.conf 条目

"dialectOptions": { "ssl": true }

ssl: true

您能帮忙修复这个错误吗?

Vin*_*ick 8

问题是,在版本15之前,postgresql将force_ssl的默认参数值(db参数组)设置为0。

从版本 15 开始,他们将此默认值设置为 1。

将其设置为 0 可以解决此问题。

来自 aws 文档,

您可以使用 rds.force_ssl 参数要求与 PostgreSQL 数据库实例的连接使用 SSL。对于 RDS for PostgreSQL 版本 15,默认 rds.force_ssl 参数设置为 1(打开)。所有其他 RDS for PostgreSQL 主要版本 14 及更早版本的 rds.force_ssl 参数默认值设置为 0(关闭)。您可以将 rds.force_ssl 参数设置为 1(打开),以要求使用 SSL 来连接到数据库实例。

参考: https: //docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Concepts.General.SSL.html