如果重复,请原谅......我找了它但却找不到它。
我需要我的用户帐户(角色)在表中具有标准CRUD权限,执行函数权限等等。
但是应该阻止此角色创建或删除对象。应禁止创建表/创建函数(或删除或更改表)。
如何做到这一点在文档中似乎并不明显。提前感谢任何帮助或见解。
答案 0 :(得分:0)
您应该关注的文档部分是PUBLIC
伪角色(包含所有用户),以及默认创建的public
架构。
公共模式的目的是让新用户创建对象而不会有太多麻烦,但如果不合适,可以通过发出以下命令来删除相应的权限:
REVOKE ALL on schema public FROM public;
在此上下文中, ALL
是CREATE, USAGE
的快捷方式。请注意,它仅在您连接的数据库中发生。
另一种选择是删除public
架构,并创建另一个架构,而不对应用程序对象有任何预定义权限。
函数的执行权限由GRANT EXECUTE
单独处理。
删除表的权限不是来自包含它的模式,只有表的所有者或超级用户才能删除它。
见https://www.postgresql.org/docs/current/static/sql-grant.html和
https://www.postgresql.org/docs/current/static/ddl-schemas.html了解更多信息。