🎯 课程主题
在 PyCharm 中通过公网 IP 连接远程 Linux 服务器上的 PostgreSQL 数据库,需要完成的额外配置操作。
📝 核心知识点
- localhost vs 公网IP:XShell 中
localhost可行,但 PyCharm 远程连接必须使用服务器的公网 IP - 安全组配置:在云服务器控制台放通 5432 端口(TCP),允许外部访问
- 监听地址修改:PostgreSQL 默认只监听本地请求,需将
listen_addresses从localhost改为* - 访问规则配置:修改
pg_hba.conf添加允许远端连接的规则 - 服务重启:修改配置后必须重启 PostgreSQL 服务
🏗️ 架构与工作流
本地 PyCharm 代码
│
▼ (通过公网 IP + 5432 端口)
云服务器安全组 ──► 放通 5432/TCP
│
▼
PostgreSQL 服务
├── postgresql.conf: listen_addresses = '*'
└── pg_hba.conf: 添加允许规则
操作流程:
- 云服务器控制台 → 安全组 → 添加规则:
0.0.0.0/0TCP:5432 - SSH 登录服务器 → 修改
postgresql.conf→listen_addresses = '*' - 修改
pg_hba.conf→ 末尾添加访问允许规则 - 重启 PostgreSQL 服务
- 用公网 IP 测试连接
💻 代码实战
步骤一:安全组放通端口
在云服务器(以腾讯云为例)控制台:
- 进入安全组配置
- 添加规则:
- 来源:
0.0.0.0/0 - 协议端口:
TCP:5432 - 策略:允许
- 来源:
步骤二:修改 postgresql.conf — 监听所有IP
# 查找配置文件位置
sudo -u postgres psql -c "SHOW config_file;"
# 编辑配置文件
sudo vim /etc/postgresql/<version>/main/postgresql.conf
# 修改以下行:
listen_addresses = '*'
步骤三:修改 pg_hba.conf — 添加访问规则
# 查找 pg_hba.conf 位置
sudo -u postgres psql -c "SHOW hba_file;"
# 编辑配置文件
sudo vim /etc/postgresql/<version>/main/pg_hba.conf
# 在文件末尾添加:
host all all 0.0.0.0/0 md5
步骤四:重启服务并验证
# 重启 PostgreSQL
sudo systemctl restart postgresql
# 查看服务状态
sudo systemctl status postgresql
# 在本地用公网 IP 测试连接
psql -h <公网IP> -p 5432 -U langchain -d langgraph_db
步骤五:在 PyCharm 中使用公网 IP
连接字符串将 localhost 替换为服务器的公网 IP 地址:
postgresql://langchain:password@<公网IP>:5432/langgraph_db
⚠️ 常见问题与避坑指南
- 只改 IP 不够:仅将
localhost换成公网 IP,但因为端口未开放、配置未修改,仍然无法连接 - 两个配置文件都要改:
postgresql.conf(监听地址)+pg_hba.conf(访问规则),缺一不可 - 改完必须重启:修改配置文件后需执行
systemctl restart postgresql才能生效 - 安全组放行:云服务器默认不开放 5432 端口,需手动在安全组添加规则
- 先测试再写代码:在 XShell 中用公网 IP 测试连通性,确认无误后再在 PyCharm 中编码
💡 个人总结与延伸
- 这节是打通"本地代码 → 远端数据库"的关键前置步骤,属于基础设施配置
listen_addresses = '*'表示监听所有网络接口,生产环境可考虑绑定特定 IPpg_hba.conf中的0.0.0.0/0允许所有 IP 访问,生产环境应限定为具体 IP 段- 连接字符串格式:
postgresql://用户名:密码@主机:端口/数据库名