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

如何通过pgAdmin创建用户:自身数据读写,他人数据只读

PostgreSQL 用户权限配置:自身数据读写+其他用户数据只读

以下操作需以超级用户(如postgres)身份在pgAdmin中执行:

1. 创建目标用户(若未创建)

先创建用户并赋予基础访问权限:

-- 创建User B,替换为安全密码
CREATE USER "User B" WITH PASSWORD 'your_secure_password';

-- 授予数据库连接权限,替换为你的数据库名
GRANT CONNECT ON DATABASE your_database_name TO "User B";

-- 授予Zoning schema的使用权限
GRANT USAGE ON SCHEMA Zoning TO "User B";

2. 配置自身创建对象的全权限

确保User B对自己在Zoning schema下创建的所有对象拥有完整读写管理权限:

-- 表权限
ALTER DEFAULT PRIVILEGES FOR ROLE "User B"
IN SCHEMA Zoning
GRANT ALL PRIVILEGES ON TABLES TO "User B";

-- 序列权限(适配自增字段场景)
ALTER DEFAULT PRIVILEGES FOR ROLE "User B"
IN SCHEMA Zoning
GRANT ALL PRIVILEGES ON SEQUENCES TO "User B";

-- 函数权限(若涉及自定义函数)
ALTER DEFAULT PRIVILEGES FOR ROLE "User B"
IN SCHEMA Zoning
GRANT ALL PRIVILEGES ON FUNCTIONS TO "User B";

3. 授权读取其他用户现有对象

仅设置默认权限无法覆盖已存在的表,需单独授权:

-- 读取Zoning schema下所有现有表
GRANT SELECT ON ALL TABLES IN SCHEMA Zoning TO "User B";

-- 读取现有序列(避免自增字段访问报错)
GRANT SELECT, USAGE ON ALL SEQUENCES IN SCHEMA Zoning TO "User B";

4. 授权读取其他用户未来创建的对象

针对特定用户(如User A)的未来对象设置默认只读权限:

-- User A未来创建的表,允许User B读取
ALTER DEFAULT PRIVILEGES FOR ROLE "User A"
IN SCHEMA Zoning
GRANT SELECT ON TABLES TO "User B";

-- User A未来创建的序列,允许User B读取使用
ALTER DEFAULT PRIVILEGES FOR ROLE "User A"
IN SCHEMA Zoning
GRANT SELECT, USAGE ON SEQUENCES TO "User B";

若需覆盖多个其他用户,对每个用户重复上述语句即可。

常见失败原因排查

  • 遗漏现有对象授权:ALTER DEFAULT PRIVILEGES仅对执行后创建的对象生效,已存在的表/序列需单独授权。
  • 缺少序列权限:带自增字段的表依赖序列,仅授权表的SELECT会导致访问自增字段时出错。
  • 未授予Schema使用权限:无USAGE ON SCHEMA权限时,无法访问Schema内任何对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 21:17:21