ida*_*dan 27 postgresql amazon-rds
我需要帮助,因为我在连接到 RDS 上的托管 Postgres 数据库时遇到问题。我遇到以下错误消息:“主机 '16.151.149.51'、用户 'analytics'、数据库 'database' 没有 pg_hba.conf 条目,没有加密” 我已确认加密功能正常,并且我还将IP添加到安全组。我应该采取什么步骤来解决这个问题?
the*_*kaa 37
首先,我想指出 Nick 的回答解决了我的问题,但我只是想为那些刚接触 AWS 的人添加详细的步骤:
通过执行这些步骤,您应该能够成功修改 Amazon RDS 实例中的 rds.force_ssl 参数。希望连接问题能够得到解决。
小智 25
如果您使用的是 15 或更高版本的引擎:
在 RDS 中设置数据库时,使用 postgres15 的默认参数组 (default.postgres15)。但是,我们需要更改“rds.force_ssl”参数,该参数在default.postgres15组中不可编辑。为此,我们将为 postgres15 创建一个新的参数组,它允许我们进行编辑。
创建新参数组后,我们将选择它并找到“rds.force_ssl”参数。我们将其值从 1 更改为 0(默认值为 1)。
然后,在数据库配置选项卡中,我们将“数据库实例参数组”从默认组切换到新组。
进行这些更改后,我们将重新启动数据库并尝试再次连接。这应该有效。
小智 10
new Pool({
user: "",
password: "",
host: "",
database: "",
port: "",
ssl: {
rejectUnauthorized: false
}
})
Run Code Online (Sandbox Code Playgroud)
对于节点 Postgres
好吧,OP 可能已经解决了这个问题,但对于遇到此问题的其他人来说:确保您已下载 AWS RDS CA 证书并仔细检查您的凭据是否正确。就我而言,我使用的 Terraform 模块manage_master_user_password默认设置为 true,它很好地默默地丢弃了我提供的密码并自行设置。
但基本上,对于不了解的人来说,使用 SSL 连接的步骤是:
publicly_accessible = true在 TF 中)或至少对具有适当入口规则的 VPC 子网开放,例如: ingress {
from_port = 5432
to_port = 5432
protocol = "tcp"
description = "PostgreSQL access for VPC and local machine"
cidr_blocks = [
module.vpc.vpc_cidr_block,
"1.1.1.1/32"
]
}
Run Code Online (Sandbox Code Playgroud)
curl -O https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem.postgresql文件夹并将证书移到那里,例如root.crt:mv global-bundle.pem /root/.postgresql/root.crtpsql postgresql://<your user>:<your pass>@postgres-1-project.z4dadjt5qxpn.us-east-1.rds.amazonaws.com:5432/<your db>?sslmode=verify-fullFATAL: password authentication failed for user再次检查您的凭据。如果您将其设置为 SSL 应该可以工作(或者至少会抱怨一些事情)verify-full