我用的是PostgreSQL 12。14我是superuser
我不希望user 1在公共模式中创建表。我已经设置了readonly权限,还授予了usage权限,并撤销了user 1对public的create权限。由于某些原因,user 1仍然能够创建表。有没有办法解决这个问题-禁止只读用户CREATE
表在公共模式,而superuser
是允许的。
连接到数据库后,默认情况下它指向public。这是我运行的(运行后没有弹出错误消息):
CREATE USER user1 WITH PASSWORD 'this-is-password';
GRANT readonly TO user1;
GRANT USAGE ON SCHEMA public TO user1;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO user1;
REVOKE CREATE ON SCHEMA public FROM user1;
先谢谢你了。
1条答案
按热度按时间w46czmvw1#
您只能撤消已授予的权限。从
user1
中撤销CREATE
的尝试没有任何作用,因为该用户从未被授予该权限。查看架构上的权限:
您可能会看到
CREATE
被授予了PUBLIC
。因此,您只能撤销该特权: