postgresql - 如何限制对模式的访问?

标签 postgresql postgresql-8.4

我有多个数据库,每个数据库都有多个模式。像这样:

db1
    schema1
    schema2
db2
    schema1
    schema2
db3
    schema1
    schema2

我需要授予对someuser *仅* db1.schema2 的访问权限。

在 pg_hba.conf 中,我可以限制哪个用户连接到哪个数据库。在 schema1 中,我可以撤销使用并创建权限。

此时 someuser 只能连接到 db1,并且只能在 schema2 而不能在 schema1 中创建表。

但是,用户可以查看schema1中表的结构。

是否可以避免某些用户查看schema1中表的结构?

最佳答案

首先,模式没有在 hba.conf 文件中使用。您正在寻找的只是授予和撤销。您想要从角色或公共(public)角色中撤销模式的“使用”。根据文档,还有其他方法(即系统表)可以查询此信息,但它会将其隐藏在前端。简而言之,没有办法绝对拒绝所有查看表格描述的方式,而且显然设计者认为没有必要实现这样的功能。 查看讨论 here

撤销模式的使用:

revoke usage on schema myschema from myrole

关于postgresql - 如何限制对模式的访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20201436/

相关文章:

python - 如何将两个字段的总和与 Django 中同一模型上的另一个字段进行比较

postgresql - 使用多个条件对分区进行排序

postgresql - 反斜杠 PSQL 命令的名称及其帮助文档的位置?

sql - 向 PostgreSQL 数据库的所有模式中的表添加一列

java - 如何在 SQL Developer 4.0 中安装最新的 Postgresql JDBC jar

c - 参加预选赛-postgresql

PostgreSQL 层次结构,类别树

使用自定义类型时 PostgreSQL 仅返回一行

postgresql - 像 git 一样存储更改的提交历史记录

node.js - 不能删除类型 "enum_TableName_column",因为其他对象依赖于它。 (PostgreSQL、Sequelize、Node.js)