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

Avi*_*Avi 2 postgresql

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

连接后它默认将我重定向到公共模式.现在我不想让这个用户rhqadmin在公共Schema中创建表.

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

Revoke Create ON SCHEMA public FROM rhqadmin;
Run Code Online (Sandbox Code Playgroud)

然后它给了我警告 -

"没有特权可以被撤销为"公共".

当我与超级用户登录postgres并从那里我撤消公共架构的'CREATE'权限为用户rhqadmin然后它没有给出任何警告并成功撤销然后我用用户登录rhqadmin并尝试在公共架构中创建表再次它允许我甚至在从超级用户撤消创建权限后创建表.

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

此致,
阿维纳什

Lau*_*lbe 6

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

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

解决方案可能是:

REVOKE CREATE ON SCHEMA public FROM PUBLIC;
Run Code Online (Sandbox Code Playgroud)

  • 谢谢劳伦兹(很抱歉回复晚了),但它现在可以工作了。请参阅我犯了一个错误,我正在使用 postgres 用户在 postgres 数据库中执行此 Revoke 命令。因此,如果我想撤销连接到 rhq db 的 rhqadmin 用户,那么我必须以 postgres 用户身份连接 rhq db,现在给出命令及其工作。:-) (2认同)