我想创建一个postgres用户,它只能访问postgres服务器上的一个数据库.

目前我的流程是:

create database database1;
create user user1 with password 'pass';
grant all privileges on database database1 to user1;

但是user1仍然可以看到数据库、用户、表等的列表.有没有办法阻止用户看到这些信息?用户需要能够写入和读取该数据库.

谢谢.

推荐答案

每个用户都可以看到列出的其他数据库和角色,但永远不能看到其他数据库中的表.

如果undo撤消除分配数据库外的所有数据库的连接权限,用户将无法访问其他数据库的内容.

角色和数据库名称是全局的,不容易被阻止.你可以试试弗兰克·海肯的建议,在系统表上有 Select 地撤销,但这样做是有风险的.usenet邮件列表上的PostgreSQL开发人员不鼓励篡改对系统目录的访问.

Psql和其他工具一样,认为没有它们它们它们是可用的,并且功能很差.

为什么知道其他names个数据库和角色如此糟糕?

Postgresql相关问答推荐

PostgreSQL:函数结果表内冲突(...)上的";中的字段名称

将列类型从文本[]更改为jsonb[]

PostgreSQL存储过程中不存在游标

无法在kubernetes中设置postgres复制

为什么我的唯一索引在 Postgresql 中不起作用?

Postgres 函数 now() 返回不正确的时区偏移量

如何使用 PostgreSQL 数据库中的函数和存储过程从动态表中获取所有数据?参数传入的表名

Postgresql:创建默认表空间的视图和使用?

PostgreSQL错误致命:角色 username不存在

Hibernate 将用户模型保存到 Postgres

在远程机器上Restore dump

在这个 Dockerfile 中创建的 Postgres 用户名/密码在哪里?

无法识别的配置参数bytea_output

plpgsql:使用 2 个 OUT 参数调用函数

我应该同时指定 INDEX 和 UNIQUE INDEX 吗?

如何使用 postgresql 中的存储过程将数据插入表中

避免 created_at 和 updated_at 由 sequelize 自动生成

从 PostgreSQL 序列中 Select 多个 id

Rails + Postgres fe_sendauth:no password supplied

在 Flask-sqlalchemy 和 Postgresql 中使用 JSON 类型