Docker 无法连接到 Postgres RDS 错误:主机没有 pg_hba.conf 条目



我正在尝试连接在macOS M1上运行在Docker引擎20上的Directus 9的本地实例到AWS RDS Postgres 15。

我能够连接到RDS数据库与posto本地ok,所以通过VPC的公共远程连接正在工作。我也能够连接到我的本地Postgres数据库在host.docker.internal

我已经尝试在RDS配置中使用参数组来不需要加密连接。设置rds。Force_ssl = 0 .

当我尝试run docker compose up

时,我得到以下错误
ERROR: no pg_hba.conf entry for host "XX.XXX.XX.XX", user "postrgres", database "EXAMPLEDB", no encryption
directus  |     err: {
directus  |       "type": "DatabaseError",
directus  |       "message": "no pg_hba.conf entry for host "XX.XXX.XX.XX", user "postrgres", database "EXAMPLEDB", no encryption",
directus  |       "stack":

我相信这意味着生产Postgres db不允许非加密连接。

我已经克隆了Directus repo,并使用docker从docker-compose构建。yml。我没有使用.env文件进行配置,而是将所有内容放入这个组合文件中。我今天刚接触docker,还不完全明白如何正确地编写这个配置,我参考了这个指南https://docs.directus.io/self-hosted/config-options.html#database

services:
database:
container_name: database
image: postgis/postgis:13-master
# Required when running on platform other than amd64, like Apple M1/M2:
#platform: linux/amd64
#volumes:
# - ./data/database:/var/lib/postgresql/data2
networks:
- directus
environment:
POSTGRES_USER: 'directus'
POSTGRES_PASSWORD: 'directus'
POSTGRES_DB: 'directus'
directus:
environment:
DB_CLIENT: 'postgres'
DB_HOST: 'xxx.rds.amazonaws.com'
DB_PORT: '5432'
DB_DATABASE: 'XXXX'
DB_USER: 'postrgres'
DB_PASSWORD: 'XXX' 
directus exited with code 1

我认为不可能对RDS上的pg_hba.conf进行任何更改,它不应该被编辑或视为解决方案。

错误的原因可能是docker镜像没有安装SSL或其他什么?

我使用了所有提供的Dockerfile和文件从https://github.com/directus/directus

关于这个错误的可能原因的解决方案有什么想法吗?

解决方案:

  1. 存在SSL问题,可能与在RDS中使用自签名证书有关,我在docker-compose中设置了以下ENV变量。

DB_SSL__REJECT_UNAUTHORIZED:假

解决了这个问题。然后…

  1. RDS数据库的用户名错误,数据库用户应该如下所示:postgres ->postgres

我认为你设置的DB_CLIENT变量是错误的。根据Directus官方文档https://docs.directus.io/self-hosted/config-options.html#config-yaml

应该是pg

在我的例子中,这是因为RDS的SSL设置,即RDS .force_ssl

最新更新