gpt4 book ai didi

sql - 我需要哪些授权(撤销)才能禁止更新表?

转载 作者:行者123 更新时间:2023-11-29 13:56:12 26 4
gpt4 key购买 nike

如果我使用普通用户帐户创建表:

create table test (a text, b text, c text);

同一用户可以对表执行所有操作...

john=# \z test
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
--------+----------+-------+-------------------+--------------------------
public | testtest | table | john=ardDxt/john |

即使我运行这个:

revoke update on test from john;

用户仍然可以更新表中的行。是否可以更改权限,使用户不再拥有允许更新的授权?

我什至试过这个:

revoke all privileges on test from john;

它清空了 john=ardDxt,但更新继续工作(假设这是因为 john 也是数据库和/或表的所有者)。我正在阅读文档本身...

PostgreSQL allows an object owner to revoke his own ordinary privileges: for example, a table owner can make the table read-only to himself by revoking his own INSERT, UPDATE, DELETE, and TRUNCATE privileges.

但我似乎无法按照它说的去做,而且例子也很少。

最佳答案

为 future 的访问者解释:

super 用户忽略权限检查。这意味着 GRANT 是不必要的,REVOKE 是无效的。 super 用户还可以禁用触发器和 much ore。因此,您不能完全阻止 super 用户更新数据。

如果有必要阻止更新,那么最好的选择实际上是一个引发异常的触发器(或者只是返回 NULL,跳过操作)。 super 用户仍然可以禁用触发器,但需要付出更多努力。

关于sql - 我需要哪些授权(撤销)才能禁止更新表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31216750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com