从用户撤消在公共架构上创建 - 在Postgresql中不起作用

时间:2017-03-22 10:50:39

标签: postgresql

我正在使用postgresql -8.4.20,它是JON服务器的后端,并使用用户名rhqadmin登录并连接到数据库rhq

连接后它默认将我重定向到公共模式。 现在我不想允许此用户rhqadmin在公共架构中创建表。

所以我使用以下命令撤销公共模式的Create权限: -

Revoke Create ON SCHEMA public FROM rhqadmin;

然后它给了我警告 -

  

“没有特权可以撤销”公共“。

当我使用超级用户postgres登录时,我从那里撤消用户rhqadmin的公共架构的“CREATE”权限,然后它没有发出任何警告并成功撤销,然后我使用用户{登录{1}}并尝试在公共模式中创建表,并且即使在从超级用户撤消创建权限后,它也允许我创建表。

请告诉我为什么撤销权限不适用于公共架构,或者我犯了任何错误。

问候,
阿维纳什

1 个答案:

答案 0 :(得分:5)

您的问题是CREATE权限未授予rhqadmin,而是授予默认情况下每个人都属于的特殊角色PUBLIC

由于PostgreSQL中的权限是附加的,如果允许所有人使用,则无法仅向单个用户明确禁止某些内容。

解决方案可能是:

REVOKE CREATE ON SCHEMA public FROM PUBLIC;