撤消postgresql中的特定列

时间:2018-01-18 09:27:56

标签: postgresql database-permissions

我已尝试使用文档here,但似乎没有帮助。如果你能给我一个例子。

revoke select (column1, column2) on table from specific_user

没用。

Access privileges
 Schema | Name  | Type  |     Access privileges     | Column privileges | Policies 
--------+-------+-------+---------------------------+-------------------+----------
 public | users | table | himanshu=arwdDxt/himanshu+|                   | 
        |       |       | reports_user=r/himanshu   |                   | 
(1 row)

1 个答案:

答案 0 :(得分:1)

问题是SQL中的权限是附加的,列权限和表权限是不同的。

撤消之前未授予的权限无效,而表格上的grantine SELECT与授予所有列的SELECT不同。

您应该撤消表上的SELECT权限,并在除了您要拒绝访问的列之外的所有列上授予SELECT

REVOKE SELECT ON "table" FROM specific_user;
GRANT SELECT (<all columns except "column1" and "column2">)
   ON "table" TO specific_user;

使用\z "table"检查结果。