【问题标题】:How to change the privileges of a table in postgresql?如何更改 postgresql 中表的权限?
【发布时间】:2015-03-20 10:09:50
【问题描述】:

我尝试在 postgresql 中向我的表“MEMBERS”授予特定权限,但没有任何变化。更具体地说,我这样做(通过 pgadmin 控制台):

    CREATE DATABASE login;
    CREATE USER loginUser WITH PASSWORD 'xxxxxxxxxxxxx';

    CREATE TABLE members (
     id serial NOT NULL,
     username varchar(30) NOT NULL
     PRIMARY KEY(id)
    )

    ALTER USER loginuser WITH SUPERUSER;
    ALTER TABLE members OWNER TO loginuser;

    GRANT SELECT, UPDATE, INSERT, DELETE ON members TO loginuser;

查询成功返回,但是当我通过 pgadmin gui 检查表的权限时,所有这些都被选中。

我错过了什么?

【问题讨论】:

  • 都被选中”是什么意思。您授予了所有特权,那么您到底期望什么?您要解决的问题是什么?
  • 我没有授予所有权限。你在说什么?仍然有 TRUNCATE、REFERECES、DROP、TRIGGER 权限。即使我执行这个查询: GRANT SELECT ON members TO loginuser;选择所有权限而不是仅选择 SELECT 权限。
  • loginuser 是表的所有者,因此角色确实拥有所有权限。
  • 我现在明白你的意思了。有没有办法改变所有者的所有者的权限?
  • @a_horse_with_no_name:更糟糕的是:“loginuser”是超级用户。

标签: postgresql pgadmin sql-grant


【解决方案1】:

默认情况下,表的所有者对其拥有完全权限。如果您希望“loginuser”只有选择、更新、插入和删除权限,您通常会先撤消所有权限,然后只授予这四个权限。

revoke all on members from loginuser;
grant select, update, insert, delete on members to loginuser;

这似乎对您有用,但实际上不会。数据库超级用户可以撤销表所有者的权限。但是您已将“登录用户”设置为超级用户。无论您撤销什么权限,“登录用户”都可以授予她自己。

您需要更仔细地考虑您要在这里完成的工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 2019-11-27
    • 2011-07-19
    相关资源
    最近更新 更多