我需要帮助,因为我在连接到RDS上的托管Postgres数据库时遇到问题。我遇到以下错误消息:“no pg_hba.conf entry for host '16.151.149.51',user 'analytics',database 'database',no encryption”我已确认加密功能正常,我还将IP添加到安全组中。我应该采取什么步骤来解决此问题?
我需要帮助,因为我在连接到RDS上的托管Postgres数据库时遇到问题。我遇到以下错误消息:“no pg_hba.conf entry for host '16.151.149.51',user 'analytics',database 'database',no encryption”我已确认加密功能正常,我还将IP添加到安全组中。我应该采取什么步骤来解决此问题?
4条答案
按热度按时间cld4siwp1#
如果您使用Engine 15或更高版本:
在RDS中设置数据库时,使用postgres15的默认参数组(default.postgres15)。但是,我们需要更改'rds.force_ssl'参数,该参数在default.postgres15组中不可编辑。为此,我们将为postgres15创建一个新的参数组,该参数组允许我们进行编辑。
一旦创建了新的参数组,我们将选择它并找到'rds.force_ssl'参数。我们将其值从1更改为0(默认值为1)。
然后,在数据库配置选项卡中,我们将“DB示例参数组”从默认组切换到新组。
完成这些更改后,我们将重新启动数据库并尝试再次连接。这应该可以工作。
0ve6wy6x2#
字符串
对于节点Postgres
bvuwiixz3#
好吧,OP可能已经解决了这个问题,但对于其他遇到这个问题的人来说:确保您下载了AWS RDS CA证书,并仔细检查您的凭据是否正确。在我的情况下,我使用的Terraform模块默认设置为true,它很好地悄悄地丢弃了我提供的密码并自行设置它。
但基本上,对于不知情的人来说,使用SSL连接的步骤是:
1.创建可公开访问的RDS(例如TF中的
publicly_accessible = true
)或至少对您的VPC主机开放,并具有适当的入口规则,例如:字符串
1.然后在您的ec2-instance / client中,下载所需的根CA https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html Global是最简单的,例如:
curl -O https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem
1.创建
.postgresql
文件夹,只要Postgres想要它,并将证书作为root.crt
移动到那里,例如:mv global-bundle.pem /root/.postgresql/root.crt
1.使用正确的连接字符串与SSL强制连接,例如:
psql postgresql://<your user>:<your pass>@postgres-1-project.z4dadjt5qxpn.us-east-1.rds.amazonaws.com:5432/<your db>?sslmode=verify-full
1.你应该连接到你的RDS。如果它说
FATAL: password authentication failed for user
再次检查你的凭据。SSL应该工作(或至少抱怨的东西),如果你有它设置为verify-full
5gfr0r5j4#
从Nikhil P K的答案中提取,这个CDK代码将关闭Postgres 15+的SSL:
字符串