撤销Postgresql中的特定列

tam*_*koo 3 postgresql database-permissions

我已尝试在此处使用文档,但似乎无济于事。如果可以,请给我一个例子。

revoke select (column1, column2) on table from specific_user
Run Code Online (Sandbox Code Playgroud)

没用。

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

Lau*_*lbe 5

问题在于,SQL中的特权是可加的,而列特权和表特权则不同。

撤消您之前未授予的特权无效,并且SELECT对表的授予与SELECT对所有列的授予不同。

您应该撤销该SELECT表的特权,并授予SELECT除您要拒绝访问的那一列之外的所有列的特权:

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

用检查结果\z "table"。

  • 我应该在```(&lt;除“column1”和“column2”外的所有列"&gt;)```中输入所有列名吗?这会在 "&lt;" 处出现语法错误。我有超过 60 列。 (3认同)
  • 然后输入 58 列。 (2认同)