代码之家  ›  专栏  ›  技术社区  ›  tambakoo

撤销postgresql中的特定列

  •  5
  • tambakoo  · 技术社区  · 7 年前

    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 回复  |  直到 7 年前
        1
  •  11
  •   Laurenz Albe    5 年前

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

    取消以前未授予的特权没有任何效果 SELECT 在桌子上与授予不同 选择 在所有列上。

    您应该撤销 选择 表上的特权和授予 选择 在除要拒绝访问的列之外的所有列上:

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

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

    推荐文章