配置 PostgreSQL 远程连接
问题背景
在使用 Odoo 时,我们经常需要连接数据库进行管理和查询。然而,PostgreSQL 默认只允许本地连接,需要进行适当的配置才能实现远程访问
环境说明
操作系统:Linux(Ubuntu/Debian)
PostgreSQL 版本:16.0
远程连接工具:Navicat
1. 配置步骤
修改 PostgreSQL 配置文件
PostgreSQL 的主配置文件通常位于 /etc/postgresql/14/main/postgresql.conf。我们需要修改监听地址以允许远程连接。
sudo vi /etc/postgresql/14/main/postgresql.conf
找到如下行(通常是被注释的):
#listen_addresses = 'localhost'
修改为:
listen_addresses = '*'

这里的 ‘*’ 表示允许来自任何 IP 地址的连接。
2. 配置客户端认证
编辑 pg_hba.conf 文件来配置客户端认证:
sudo vi /etc/postgresql/14/main/pg_hba.conf
在文件末尾添加以下行:
host all all 0.0.0.0/0 md5

这行配置表示:
host:允许 TCP/IP 连接
all:允许访问所有数据库
ll:允许所有用户
0.0.0.0/0:允许来自任何 IP 地址的连接。
md5:使用 MD5 加密的密码认证
3. 重启 PostgreSQL 服务
配置修改后,需要重启 PostgreSQL 服务使更改生效:
sudo systemctl restart postgresql
4. 配置防火墙
检查防火墙设置,在虚拟机上运行:
sudo ufw status
如果系统开启了防火墙,需要允许 PostgreSQL 端口(5432)的访问:
sudo ufw allow 5432/tcp
