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

PostgreSQL 10.3权限问题:user_remote远程访问数据库异常

解决PostgreSQL user_remote远程访问权限问题

你踩了一个PostgreSQL里很常见的权限误区:GRANT ALL PRIVILEGES ON DATABASE 只是赋予了用户对数据库对象的操作权限,但远程访问的限制是在连接层面单独控制的,和数据库对象权限是完全两回事。下面是一步步的排查和解决方法:

1. 确保PostgreSQL监听外部请求

首先得让数据库愿意接收来自远程的连接请求:

  • 找到PostgreSQL的配置文件 postgresql.conf(通常路径是 /var/lib/postgresql/10/main/ 或 /etc/postgresql/10/main/,具体看你的系统)
  • 找到 listen_addresses 配置项,修改成:
    listen_addresses = '*'
    
    要是只想允许特定IP(比如你的后端服务器IP)访问,也可以写成 listen_addresses = '192.168.1.100' 这种具体IP。

2. 配置客户端访问规则(pg_hba.conf)

这是控制谁能连接数据库的核心配置文件:

  • 打开同目录下的 pg_hba.conf
  • 在文件末尾添加一条规则,允许 user_remote 远程访问(建议限定IP段更安全,全开放只是临时测试用):
    host    all             user_remote       0.0.0.0/0               md5
    
    各字段说明:
    • host:表示允许TCP/IP连接
    • all:允许访问所有数据库,也可以替换成你的目标数据库名
    • 0.0.0.0/0:允许所有外部IP访问,内网环境建议改成你的后端服务器IP段,比如 192.168.1.0/24
    • md5:要求用户输入密码认证

3. 重启PostgreSQL服务

修改配置后必须重启服务才能生效:

  • Debian/Ubuntu系统:
    sudo systemctl restart postgresql@10-main
    
  • RHEL/CentOS系统:
    sudo systemctl restart postgresql-10
    

4. 确认user_remote的登录权限

虽然创建用户时默认会带登录权限,但保险起见可以确认一下:

-- 先用user_owner身份连接数据库,执行这条命令
ALTER USER user_remote WITH LOGIN;

5. 测试远程连接

在你的后端服务器上用命令测试连接是否正常:

psql -h <数据库服务器IP> -U user_remote -d <你的数据库名>

如果能成功输入密码并进入数据库,就说明问题解决了。

额外排查点

  • 检查数据库服务器的防火墙,确保5432端口(PostgreSQL默认端口)对外开放
  • 确认user_remote的密码正确,要是记不清可以用 ALTER USER user_remote PASSWORD '新密码'; 重置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:42:39