如何在 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" 都可以授予她自己。
您需要更仔细地考虑您要在这里完成的任务。
我尝试在 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" 都可以授予她自己。
您需要更仔细地考虑您要在这里完成的任务。