我正在使用postgresql -8.4.20
,它是JON服务器的后端,并使用用户名rhqadmin
登录并连接到数据库rhq
。
连接后它默认将我重定向到公共模式。
现在我不想允许此用户rhqadmin
在公共架构中创建表。
所以我使用以下命令撤销公共模式的Create权限: -
Revoke Create ON SCHEMA public FROM rhqadmin;
然后它给了我警告 -
“没有特权可以撤销”公共“。
当我使用超级用户postgres
登录时,我从那里撤消用户rhqadmin
的公共架构的“CREATE”权限,然后它没有发出任何警告并成功撤销,然后我使用用户{登录{1}}并尝试在公共模式中创建表,并且即使在从超级用户撤消创建权限后,它也允许我创建表。
请告诉我为什么撤销权限不适用于公共架构,或者我犯了任何错误。
问候,
阿维纳什
答案 0 :(得分:5)
您的问题是CREATE
权限未授予rhqadmin
,而是授予默认情况下每个人都属于的特殊角色PUBLIC
。
由于PostgreSQL中的权限是附加的,如果允许所有人使用,则无法仅向单个用户明确禁止某些内容。
解决方案可能是:
REVOKE CREATE ON SCHEMA public FROM PUBLIC;