use*_*919 2 postgresql pgadmin sql-grant
我尝试向 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;
Run Code Online (Sandbox Code Playgroud)
查询成功返回,但是当我通过 pgadmin gui 检查表的权限时,所有这些都被选中。
我缺少什么?
默认情况下,表的所有者对其拥有完全权限。如果您希望“loginuser”仅具有选择、更新、插入和删除权限,通常会先撤销所有权限,然后仅授予这四种权限。
revoke all on members from loginuser;
grant select, update, insert, delete on members to loginuser;
Run Code Online (Sandbox Code Playgroud)
这看起来对你有用,但实际上不会。数据库超级用户可以撤销表所有者的权限。但您已将“loginuser”设置为超级用户。无论您撤销什么权限,“loginuser”都可以授予自己权限。
您需要更仔细地考虑您要在这里完成的任务。