如何在允许用户执行创建,读取,更新和删除操作的同时,防止用户执行架构修改(例如添加新表,删除表列等)?
答案 0 :(得分:0)
最好的解决方案是使用两个用户:
USAGE
,上的SELECT
,INSERT
,UPDATE
和DELETE
的必要权限的对象表格等)您可以使用ALTER DEFAULT PRIVILEGES
来获得将来创建的所有对象的权限。
答案 1 :(得分:0)
根据documentation,模式CREATE | USAGE
有两种可能的特权,其中创建allows new objects to be created within the schema
(需要防止)和使用{{1} }(您想要保留的内容)。
因此您需要allows access to objects contained in the specified schema
和REVOKE CREATE ON SCHEMA ... FROM ...
但是,在此之前,请谨慎使用privileges granted on PUBLIC,您可能必须撤销对PUBLIC的所有权限,并将其授予必要的用户。