如何在 postgresql 中更改 table 的权限?

How to change the privileges of a table in postgresql?

我尝试在 postgresql 中向我的 table "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 检查 table 的权限时,所有这些都被选中了。

我错过了什么?

默认情况下,table 的所有者对其拥有全部权限。如果您希望 "loginuser" 只有 select、更新、插入和删除权限,您通常会先撤销所有权限,然后只授予这四个权限。

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

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

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