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

AWS Ubuntu 22.04服务器上Scrapy爬虫连接PostgreSQL数据库遇Connection refused问题求助

问题分析与解决方案

从你给出的错误日志和配置来看,核心问题是AWS Ubuntu服务器上的PostgreSQL服务无法被本地的Scrapy爬虫连接,错误提示connection to server at "localhost" (127.0.0.1), port 5432 failed: Connection refused已经点明了方向,下面是一步步的排查和解决方法:

1. 确认PostgreSQL是否已安装并运行在Ubuntu服务器上

你的本地iMac上有PostgreSQL(通过pgAdmin4管理),但AWS服务器是全新实例,默认不会预装PostgreSQL,这是最常见的原因:

  • 检查是否已安装PostgreSQL:
    sudo apt list --installed | grep postgresql
    
  • 如果未安装,执行以下命令安装:
    sudo apt update && sudo apt install postgresql postgresql-contrib
    
  • 检查服务运行状态:
    sudo systemctl status postgresql
    
  • 如果服务未启动,启动并设置开机自启:
    sudo systemctl start postgresql
    sudo systemctl enable postgresql
    

2. 配置PostgreSQL允许TCP/IP连接

PostgreSQL默认可能只允许本地socket连接,不开启TCP监听,需要修改两个关键配置文件:

修改postgresql.conf

找到配置文件(Ubuntu 22.04默认路径为/etc/postgresql/14/main/postgresql.conf,版本号可能不同),修改listen_addresses参数:

# 原配置可能是 listen_addresses = 'localhost' 或者被注释
listen_addresses = '*'  # 允许所有IP连接,也可以指定服务器私有IP提升安全性

修改pg_hba.conf

同样在上述路径下,添加或确保存在允许localhost连接的规则:

# 允许127.0.0.1的TCP连接,使用scram-sha-256认证(推荐)
host    all             all             127.0.0.1/32            scram-sha-256

修改完成后重启PostgreSQL服务:

sudo systemctl restart postgresql

3. 验证数据库用户权限与密码配置

你的数据库配置中用户是usr,密码为空,需要确保该用户存在且拥有足够权限:

  • 切换到PostgreSQL默认管理员用户:
    sudo -u postgres psql
    
  • 检查usr用户是否存在:
    SELECT usename FROM pg_user;
    
  • 如果不存在,创建用户(空密码)并赋予数据库权限:
    CREATE USER usr WITH PASSWORD '';
    GRANT ALL PRIVILEGES ON DATABASE scrape TO usr;
    

注意:空密码存在安全风险,如果是生产环境建议设置强密码,并对应修改pg_hba.conf的认证规则。

4. 检查配置细节

你的数据库配置中port是字符串类型'5432',虽然SQLAlchemy会自动处理,但建议改为整数5432避免潜在问题:

DATABASE = {
    "user": "usr",
    "passw": "",
    "host": "localhost",
    "port": 5432,  # 改为整数
    "database": "scrape",
    'table':'cdp_env',
    'if_exists':'append',
    'drivername':'postgresql'
}

5. 防火墙与安全组检查

因为你的爬虫是在服务器本地连接localhost,所以AWS安全组不会影响本地连接,但可以检查Ubuntu本地防火墙ufw是否意外拦截了端口:

sudo ufw status

如果显示5432端口被拒绝,执行以下命令允许本地连接:

sudo ufw allow from 127.0.0.1 to any port 5432

按照以上步骤排查后,应该就能解决连接被拒绝的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 20:47:39