You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Directus 9无法连接AWS RDS Postgres 15:pg_hba.conf无条目错误

问题:Docker中Directus 9连接AWS RDS Postgres 15失败,提示无加密连接权限

环境与现状

  • 运行环境:macOS M1、Docker Engine 20、Directus 9、AWS RDS Postgres 15
  • 本地通过Postico可正常连接RDS,说明VPC公网远程连接正常;同时能连接host.docker.internal上的本地Postgres数据库
  • 尝试在RDS参数组设置rds.force_ssl = 0取消加密连接要求,但未生效
  • 执行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":

当前Docker Compose配置

克隆Directus仓库通过docker-compose.yml构建镜像,未使用.env文件,所有配置均写入该文件:

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导致该错误?使用的是Directus官方仓库提供的所有Dockerfile及文件
  • 请求该错误的可能原因及解决方案

可能原因及解决方案

1. 用户名拼写错误(优先排查)

错误信息和配置中的用户名都是postrgres,正确的Postgres默认用户名是postgres(少了一个字母e)。这个拼写错误会导致RDS无法识别用户,进而触发加密相关的错误提示。先修正DB_USER字段为postgres。

2. 强制开启SSL连接(推荐方案)

AWS RDS Postgres默认要求SSL连接,即使设置rds.force_ssl=0,也可能因参数组未重启生效或RDS安全策略优先级问题无效。正确做法是在Directus配置中强制启用SSL:

在directus服务的environment中添加以下配置:

DB_SSL: 'true'
DB_SSL_REJECT_UNAUTHORIZED: 'false' # 使用RDS默认证书时可设为false,若需验证证书可指定证书路径

修正后的directus环境配置示例:

directus:
  environment:
    DB_CLIENT: 'postgres'
    DB_HOST: 'xxx.rds.amazonaws.com'
    DB_PORT: '5432'
    DB_DATABASE: 'XXXX'
    DB_USER: 'postgres' # 修正拼写
    DB_PASSWORD: 'XXX'
    DB_SSL: 'true'
    DB_SSL_REJECT_UNAUTHORIZED: 'false'

3. 确认RDS参数组修改已生效

若坚持关闭SSL,需确保:

  • 修改rds.force_ssl=0的参数组已关联到目标RDS实例
  • 已重启RDS实例(RDS参数组修改不会立即生效,必须重启才能应用)

4. Docker镜像SSL支持说明

Directus官方镜像基于Node.js,已包含SSL所需依赖,无需额外安装。问题大概率不在镜像本身,而是配置或RDS策略问题。


内容的提问来源于stack exchange,提问作者user74847

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 14:37:33