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

如何在PostgreSQL数据库的新端口上配置并启用SSL

在PostgreSQL新端口上启用SSL的具体方案

方案一:单实例监听多个端口(共享同一数据目录)

适合让同一个PostgreSQL实例同时监听默认端口和新端口,且两个端口均强制SSL连接。

  1. 修改postgresql.conf配置文件

    • 确认全局SSL开关已开启(你已在5432端口启用,此步骤大概率已完成,可再次核对):
      ssl = on
      
    • 配置多端口监听,将port参数改为逗号分隔的端口列表,例如新增5433端口:
      port = 5432, 5433
      
    • 确认SSL证书路径配置正确(替换为你的实际证书/密钥路径):
      ssl_cert_file = '/var/lib/postgresql/14/main/server.crt'
      ssl_key_file = '/var/lib/postgresql/14/main/server.key'
      ssl_ca_file = '/var/lib/postgresql/14/main/root.crt'  # 可选,如需客户端证书验证
      
    • 重启PostgreSQL服务生效:
      sudo systemctl restart postgresql
      
  2. 配置pg_hba.conf强制新端口使用SSL
    若需新端口仅接受SSL连接,在pg_hba.conf中添加对应规则(注意规则顺序,确保该规则在非SSL的host规则之前):

    # 允许所有IP通过5433端口SSL连接所有数据库
    hostssl all all 0.0.0.0/0 scram-sha-256
    # 如需客户端证书验证,添加clientcert=1参数
    hostssl all all 0.0.0.0/0 scram-sha-256 clientcert=1
    

    修改后执行重载配置或重启服务:

    sudo -u postgres psql -c "SELECT pg_reload_conf();"
    

方案二:启动独立PostgreSQL实例(新端口+独立配置)

适合新端口对应独立的实例(如不同数据目录、配置参数)。

  1. 创建新数据目录与配置文件

    • 创建新数据目录(以PostgreSQL 14为例):
      sudo mkdir -p /var/lib/postgresql/14/new_port
      sudo chown postgres:postgres /var/lib/postgresql/14/new_port
      
    • 复制并修改原配置文件:
      sudo cp /etc/postgresql/14/main/postgresql.conf /var/lib/postgresql/14/new_port/
      sudo cp /etc/postgresql/14/main/pg_hba.conf /var/lib/postgresql/14/new_port/
      sudo chown postgres:postgres /var/lib/postgresql/14/new_port/*.conf
      
  2. 调整新实例的配置

    • 编辑新的postgresql.conf:
      port = 5433  # 设置新端口
      data_directory = '/var/lib/postgresql/14/new_port'  # 指定新数据目录
      ssl = on
      ssl_cert_file = '/var/lib/postgresql/14/main/server.crt'  # 可复用原证书或使用新证书
      ssl_key_file = '/var/lib/postgresql/14/main/server.key'
      # 按需调整其他参数,如listen_addresses、max_connections等
      
    • 编辑新的pg_hba.conf,参考方案一添加SSL连接规则。
  3. 初始化并启动新实例

    • 切换到postgres用户初始化实例:
      sudo -u postgres initdb -D /var/lib/postgresql/14/new_port
      
    • 启动新实例:
      sudo -u postgres pg_ctl -D /var/lib/postgresql/14/new_port start
      
    • 可选:设置开机自启,创建systemd服务文件/etc/systemd/system/postgresql@14-new_port.service:
      [Unit]
      Description=PostgreSQL 14 database server (new port instance)
      Documentation=man:postgres(1)
      After=network.target
      
      [Service]
      Type=notify
      User=postgres
      ExecStart=/usr/lib/postgresql/14/bin/postgres -D /var/lib/postgresql/14/new_port
      ExecReload=/bin/kill -HUP $MAINPID
      KillMode=mixed
      KillSignal=SIGINT
      TimeoutSec=0
      
      [Install]
      WantedBy=multi-user.target
      
    • 启用并启动服务:
      sudo systemctl daemon-reload
      sudo systemctl enable postgresql@14-new_port
      sudo systemctl start postgresql@14-new_port
      

验证新端口SSL连接

使用psql测试连接:

psql "host=localhost port=5433 dbname=postgres user=your_user sslmode=require"

连接成功后,执行以下SQL确认SSL状态:

SELECT ssl FROM pg_stat_activity WHERE pid = pg_backend_pid();

返回t则表示当前连接已使用SSL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:03:09