【问题标题】:Revoke Create on public Schema from user - is not working in Postgresql从用户撤消在公共架构上创建 - 在 Postgresql 中不起作用
【发布时间】:2017-08-14 10:30:18
【问题描述】:

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

连接后默认情况下它会将我重定向到公共架构。 现在我不想让这个用户rhqadmin 在公共架构中创建表。

所以我正在使用以下命令撤销对公共架构的创建权限:-

Revoke Create ON SCHEMA public FROM rhqadmin;

然后它给我警告 -

“不能为“public”撤销任何特权。

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

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

问候,
阿维纳什

【问题讨论】:

    标签: postgresql


    【解决方案1】:

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

    由于 PostgreSQL 中的权限是附加的,因此如果允许所有人使用,则无法明确禁止仅对单个用户执行某项操作。

    解决办法大概是:

    REVOKE CREATE ON SCHEMA public FROM PUBLIC;
    

    【讨论】:

    • 不,到目前为止,我已经尝试过上述解决方案,但它也不适用于 public schema 。我的意思是它不应该允许我在公共模式中创建表。但我仍然可以创建表格。
    • psql 中运行\dn+ public 并将结果添加到问题中,然后我就可以弄清楚发生了什么。您的用户是否授予了任何角色(组)?
    • 感谢 Laurenz(抱歉回复晚了),但它现在可以工作了。看到我在使用 postgres 用户在 postgres db 中执行此 Revoke 命令时犯了一个错误。因此,如果我想撤销连接到 rhq db 的 rhqadmin 用户,那么我必须以 postgres 用户身份连接到 rhq db,现在给出命令及其工作。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-04
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 2019-04-11
    • 2014-03-13
    相关资源
    最近更新 更多