撤销postgresql中的特定列

ivqmmu1c  于 6个月前  发布在  PostgreSQL
关注(0)|答案(2)|浏览(54)

我试过使用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)

fzsnzjdm

fzsnzjdm1#

问题是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;

字符串
\z "table"检查结果。

syqv5f0l

syqv5f0l2#

@Laurenz的答案是正确的。然而,我对语法有点困惑。只是为了澄清:
public.values

+---------+---------+---------+
|    A    |    B    |    C    |
+---------+---------+---------+
| Value 1 | Value 2 | Value 3 |
+---------+---------+---------+

字符串
如果用户 peter 应该只看到列 AB,则需要以下命令:

REVOKE SELECT ON public.values FROM peter;
GRANT SELECT ("A", "B") ON public.values TO peter;

相关问题