[英]Restrict create table privilege to newly created users in RDS PostgreSQL 9.6
在RDS PostgreSQL 9.6中创建只读用户时遇到问题。 我正在执行以下SQL命令:
---- ###### CREATE ROLE ################
CREATE ROLE readonlyrole_dev;
-- Grant access to existing tables
GRANT USAGE ON SCHEMA public TO readonlyrole_dev;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonlyrole_dev;
-- set the privileges that will be applied to objects created in the future.
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonlyrole_dev;
CREATE USER readonly_dev WITH PASSWORD 'welcome1';
GRANT readonlyrole_dev TO readonly_dev;
当我使用readonly_dev
用户登录时,默认情况下它具有创建新表的特权,但我不想这样做。 我想让readonly_dev
只保留一个只读用户。
注意:要撤消我正在执行的用户的访问
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
也会撤销所有旧用户的创建对象特权。 我只想撤销新创建用户的创建特权。
我怎样才能做到这一点?
您不能这样做,也没有必要。
只需拒绝用户对所有架构的CREATE
权限即可。 您应该为此使用用户组-将所有应具有特权的用户都放在对模式具有所需特权的组中创建表,并从PUBLIC
撤消CREATE
。
如果您坚持必须这样做,请尝试创建一个事件触发器 ,该触发器将在特定用户尝试创建表时引发异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.