1. 修改PostgreSQL监听配置(postgresql.conf)
要允许PostgreSQL接受网络连接,需调整其监听地址设置。编辑配置文件/etc/postgresql/<version>/main/postgresql.conf(<version>为PostgreSQL版本号,如16),找到listen_addresses参数,将其值从默认的localhost或127.0.0.1修改为*(允许所有IP地址连接)或指定具体IP(如192.168.1.100,仅允许特定服务器访问)。同时,确认port参数为默认的5432(或根据需求修改为其他未被占用的端口)。修改完成后保存文件。
2. 配置客户端认证规则(pg_hba.conf)
PostgreSQL通过pg_hba.conf文件控制客户端访问权限。编辑/etc/postgresql/<version>/main/pg_hba.conf,在文件末尾添加允许远程连接的规则。常见配置为:host all all 0.0.0.0/0 md5(允许所有IP地址通过MD5加密密码认证访问所有数据库);若需限制特定IP段(如192.168.1.0/24),可将0.0.0.0/0替换为192.168.1.0/24。修改后保存文件。
3. 重启PostgreSQL服务使配置生效
修改配置文件后,需重启PostgreSQL服务以应用更改。执行命令:sudo systemctl restart postgresql。可通过sudo systemctl status postgresql检查服务状态,确认显示为active (running)则表示重启成功。
4. 配置Ubuntu防火墙(UFW)
若系统启用了UFW防火墙,需放行PostgreSQL的默认端口(5432),允许外部流量访问。执行命令:sudo ufw allow 5432/tcp,然后重新加载防火墙规则:sudo ufw reload。可通过sudo ufw status验证端口是否已放行。
5. 设置PostgreSQL用户密码
默认情况下,PostgreSQL的postgres用户密码为空或随机生成,需为其设置强密码。执行命令:sudo -u postgres psql进入PostgreSQL命令行,然后输入:ALTER USER postgres WITH ENCRYPTED PASSWORD 'your_secure_password';(将your_secure_password替换为复杂密码,如包含大小写字母、数字和符号的组合)。输入\q退出命令行。
6. 验证远程连接(可选)
可使用psql命令行工具或pgAdmin等客户端验证远程连接。例如,在另一台机器上执行:psql -h <server_ip> -U postgres -d postgres(<server_ip>为PostgreSQL服务器的IP地址),输入密码后若能成功登录,则说明网络配置生效。
7. 安全增强建议
pg_hba.conf中避免使用0.0.0.0/0,改为允许特定IP段(如公司内网IP),减少潜在攻击面。postgresql.conf中启用SSL(ssl = on),并指定证书和密钥文件路径(ssl_cert_file、ssl_key_file),确保数据传输安全。postgres)更换密码,避免密码泄露。