Postgres:限制用户帐户/角色创建数据库对象的能力

时间:2016-07-15 15:01:41

标签: postgresql

如果重复,请原谅......我找了它但却找不到它。

我需要我的用户帐户(角色)在表中具有标准CRUD权限,执行函数权限等等。

但是应该阻止此角色创建或删除对象。应禁止创建表/创建函数(或删除或更改表)。

如何做到这一点在文档中似乎并不明显。提前感谢任何帮助或见解。

1 个答案:

答案 0 :(得分:0)

您应该关注的文档部分是PUBLIC伪角色(包含所有用户),以及默认创建的public架构。

公共模式的目的是让新用户创建对象而不会有太多麻烦,但如果不合适,可以通过发出以下命令来删除相应的权限:

REVOKE ALL on schema public FROM public;
在此上下文中,

ALLCREATE, USAGE的快捷方式。请注意,它仅在您连接的数据库中发生。

另一种选择是删除public架构,并创建另一个架构,而不对应用程序对象有任何预定义权限。

函数的执行权限由GRANT EXECUTE单独处理。

删除表的权限不是来自包含它的模式,只有表的所有者或超级用户才能删除它。

https://www.postgresql.org/docs/current/static/sql-grant.html
https://www.postgresql.org/docs/current/static/ddl-schemas.html了解更多信息。