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

PostgreSQL本地免密登录问题及强制密码验证配置咨询

问题解答

一、为何当前配置允许本地免密登录?

PostgreSQL的pg_hba.conf是按从上到下的顺序匹配连接规则的,你的配置里有一条优先级很高的宽松规则:

local   all             all                                     trust
  • local对应Unix域套接字的本地连接(你执行psql gitea gitea时默认用的就是这种连接方式,而非TCP/IP)
  • trust认证方式意味着PostgreSQL直接放行连接,不需要任何密码验证
    这条规则会先被匹配到,所以哪怕你给gitea用户设置了密码,本地套接字登录也会直接免密通过。

二、如何修改配置让"gitea"用户无论本地还是远程都必须验证密码?

1. 调整pg_hba.conf规则

PostgreSQL匹配规则是先到先得,要把针对gitea的严格规则放在前面,覆盖宽松的trust规则:

  • 针对本地套接字连接:
    在local all postgres peer这一行之后,添加专门针对gitea用户的规则:
    local   gitea          gitea                                   scram-sha-256
    
    如果你想让所有本地套接字连接都需要密码,也可以直接把原来的local all all trust改成:
    local   all             all                                     scram-sha-256
    
  • 针对远程TCP连接:
    你已有针对本地TCP的gitea规则,若要允许特定远程IP访问并强制密码验证,添加类似规则(替换xxx.xxx.xxx.xxx/xx为允许的远程IP段):
    host    gitea           gitea           xxx.xxx.xxx.xxx/xx       scram-sha-256
    
    注:推荐用scram-sha-256(比md5更安全),若gitea用户密码哈希不是scram格式,可执行命令更新:
    ALTER USER gitea WITH PASSWORD '你的密码' ENCRYPTED WITH scram-sha-256;
    

2. 重新加载配置生效

修改完pg_hba.conf后,无需重启服务,执行以下命令让配置生效:

sudo systemctl reload postgresql

或者用PostgreSQL内置命令:

psql -U postgres -c "SELECT pg_reload_conf();"

3. 验证效果

执行psql gitea gitea,此时会提示输入密码,正确输入后才能登录;远程连接gitea用户时也会要求验证密码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:10:18