sib*_*ert 5 postgresql postgresql-9.4
我为一个应该只执行一些存储函数的用户创建了一个单独的角色"newrole"和新模式"newschema".我已设法撤销对当前数据库的模式"public"的访问权限.
登录为"newrole"我仍然可以访问postgres数据库,如下所示:
SELECT * FROM pg_user
Run Code Online (Sandbox Code Playgroud)
我想撤销对postgres数据库的所有访问权限并尝试执行以下操作:
REVOKE ALL ON DATABASE postgres FROM newrole
Run Code Online (Sandbox Code Playgroud)
当以newrole身份登录时,我仍然可以阅读postgres数据库.
如何撤销对postgres管理数据库的任何访问?
我已经搜索了很长时间但没有找到任何有关访问postgres管理数据库的信息.
TIA,
此问题与数据库无关postgres.相反,您希望操纵当前数据库的目录.每个数据库都有一个关于模式中所有对象的信息目录pg_catalog,以及模式中符合标准的表单information_schema,因此您应该限制对相关角色以及角色的访问,public因为每个角色也是该角色的成员:
REVOKE ALL PRIVILEGES ON SCHEMA pg_catalog FROM newrole;
REVOKE ALL PRIVILEGES ON SCHEMA pg_catalog FROM public;
REVOKE ALL PRIVILEGES ON SCHEMA information_schema FROM newrole;
REVOKE ALL PRIVILEGES ON SCHEMA information_schema FROM public;
Run Code Online (Sandbox Code Playgroud)
但是,系统并不总是遵守这种全面限制,目录是有原因的,并在数据库中提供重要功能.特别是功能仍然可以执行.
一般来说,除非你真的知道自己在做什么,否则你不想弄乱目录.
| 归档时间: |
|
| 查看次数: |
12907 次 |
| 最近记录: |