【问题标题】:Revoke particular columns in postgresql撤销 postgresql 中的特定列
【发布时间】:2018-06-27 07:41:20
【问题描述】:

我尝试使用文档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)

【问题讨论】:

  • 请编辑问题以包含\z tablepsql中运行的输出。
  • 我首先将用户选择权限授予reports_user,然后使用上面的撤销语法撤销column1 和column2。尽管如此,我仍然可以从报告用户访问第 1 列和第 2 列。

标签: postgresql database-permissions


【解决方案1】:

问题是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"检查结果。

【讨论】:

  • 我应该在(&lt;all columns except "column1" and "column2"&gt;) 中输入所有列名吗?这会在 "
  • 然后输入58列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-02
  • 2020-05-14
相关资源
最近更新 更多