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

PostgreSQL 16使用pg_restore指定表所有者遇权限问题求助

解决PostgreSQL 16中pg_restore导入时public schema权限问题

1. 补充schema权限授权

当前错误是因为ibrox用户没有public schema的操作权限,PostgreSQL 16默认不再自动给所有用户开放public schema权限。需要以数据库所有者(root)身份连接到目标数据库,执行以下授权语句:

-- 授予ibrox用户public schema的全部操作权限
GRANT ALL ON SCHEMA public TO ibrox;

-- 设置默认权限,确保后续导入的表、序列、函数等对象自动拥有对应权限
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO ibrox;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO ibrox;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON FUNCTIONS TO ibrox;

2. 重新执行pg_restore命令

你的恢复命令参数已经符合需求(-O会忽略备份中的所有者设置,让ibrox成为导入后所有表的所有者;-x会跳过备份中的权限设置,避免权限冲突),授权完成后重新执行即可:

/usr/bin/pg_restore --disable-triggers -d template_crmpicco_1872 -h crmpiccopg.anh73jdk19.us-east-1.rds.amazonaws.com -n public -U ibrox -O -x /tmp/tmpimy39zj2/template_crmpicco_1872

关键说明

  • -O参数:强制导入后的所有数据库对象(表、索引等)的所有者为当前执行命令的用户(即ibrox),满足你“表所有者为ibrox”的需求。
  • -x参数:跳过备份文件中的权限设置,避免原备份的权限覆盖你手动配置的权限。
  • PostgreSQL 16的权限变更:相比旧版本,16默认收紧了public schema的权限,必须显式授权才能让普通用户操作该schema下的对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:33:13