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

Python无密码连接PostgreSQL:新环境fe_sendauth报错的原因与配置方案

问题分析与解决办法

生产环境无需密码连接的原因

无非两种常见情况:

  • PostgreSQL服务端信任生产服务器IP:生产环境的PostgreSQL数据库在pg_hba.conf配置文件中,给生产应用服务器的IP设置了trust认证规则,从这个IP发起的连接,只要用户名匹配就直接放行,不需要密码。
  • 客户端用了.pgpass存储密码:生产应用服务器上,运行Python代码的用户家目录下有个.pgpass文件,里面预先存了数据库密码,psycopg2会自动读取这个文件,所以代码里不用写密码参数也能成功连接。

新环境复刻配置的步骤

方式一:服务端配置信任IP(适合内网环境)

  1. 登录新PostgreSQL数据库所在的服务器,找到pg_hba.conf文件(可通过psql -c 'SHOW hba_file;'查询准确路径,常见路径比如/var/lib/postgresql/[版本号]/main/pg_hba.conf)。
  2. 在文件末尾添加一条信任规则,格式如下:
    host    你的数据库名    你的用户名    新应用服务器IP/32    trust
    
    如果是整个内网网段,比如192.168.1.0/24,也可以写成192.168.1.0/24。
  3. 重启PostgreSQL服务生效:
    # 系统d环境
    systemctl restart postgresql
    # 或用service命令
    service postgresql restart
    

方式二:客户端配置.pgpass文件(更安全)

  1. 在新应用服务器上,切换到运行Python代码的业务用户(比如www-data或你的专属业务账号)。
  2. 在用户家目录下创建.pgpass文件,内容格式为:
    新数据库IP:新端口:你的数据库名:你的用户名:数据库密码
    
  3. 设置文件权限为600(PostgreSQL要求这个文件必须严格限制权限,否则不生效):
    chmod 600 ~/.pgpass
    
  4. 确保文件所有者是运行代码的用户,之后再运行原有Python代码就会自动读取密码,无需修改代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 23:45:58