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

PostgreSQL无法撤销默认权限问题咨询及arw权限缩写疑问

PostgreSQL默认权限撤销问题解答

问题背景

当前PostgreSQL默认访问权限状态:

postgres=> \ddp
              Default access privileges
  Owner   | Schema | Type  |    Access privileges
----------+--------+-------+--------------------------
 postgres | public | table | "app"=arw/postgres+
          |        |       | dbt=arw/postgres
(1 row)

执行以下撤销命令后未产生预期效果:

ALTER DEFAULT PRIVILEGES FOR USER postgres IN SCHEMA public REVOKE ALL ON TABLES FROM "app";
ALTER DEFAULT PRIVILEGES FOR USER postgres IN SCHEMA public REVOKE ALL ON TABLES FROM dbt;

1. 撤销命令存在的问题

你执行的命令中FOR USER postgres的用法有误:ALTER DEFAULT PRIVILEGES FOR USER X是用来修改X用户未来创建对象时会应用的默认权限规则,而非撤销X用户已经授予给其他用户的默认权限。

从\ddp输出的arw/postgres可以看出,这些默认权限是由postgres用户授予的。要撤销这类权限,需以授予者身份执行命令,或明确指定授予者:

  • 如果当前登录用户是postgres,直接执行:
    ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON TABLES FROM "app";
    ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON TABLES FROM dbt;
    
  • 如果用其他超级用户执行,需明确指定授予者:
    ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON TABLES FROM "app";
    ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON TABLES FROM dbt;
    

你之前的命令因未正确匹配权限的授予关系,导致执行成功但未生效。

2. "arw"缩写的含义

PostgreSQL中权限缩写对应关系:

  • a = INSERT(插入数据权限)
  • r = SELECT(查询数据权限)
  • w = UPDATE(更新数据权限)
    因此arw表示该用户拥有对应表的插入、查询、更新权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:13:30