如何防止执行架构修改用户如添加新表,删除表中的列等,同时使用户能够进行创建,读取,更新和删除操作?
造成这种情况的最好的解决方案是使用两个用户:
USAGE
,SELECT
,INSERT
和UPDATE
DELETE
等)您可以使用ALTER DEFAULT PRIVILEGES
获得许可权在未来创建的所有对象。
据documentation存在的架构CREATE | USAGE
,在那里的CREATE allows new objects to be created within the schema
(你所需要的,以防止)和使用allows access to objects contained in the specified schema
(您想保留什么)两种可能的特权。
因此,你需要REVOKE CREATE ON SCHEMA ... FROM ...
和GRANT USAGE ON SCHEMA ... TO ...
但是,在此之前,小心privileges granted on PUBLIC,也许你有权撤销对公众所有的权限,并将其授予必要的用户。