在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特权。我只想撤销新创建的用户的create权限。
我怎么能这么做?
发布于 2018-12-28 01:08:51
你不能这样做,这也没有必要。
只需拒绝用户对所有架构的CREATE
权限即可。为此,您应该使用用户组--将所有应该有权在架构上具有所需权限的组中创建表并将CREATE
从PUBLIC
中撤消的用户放入其中。
如果坚持必须这样做,请尝试创建一个事件触发器,每当某个用户试图创建表时,该触发器就会抛出异常。
https://stackoverflow.com/questions/53943853
复制相似问题