You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制用户查询information_schema?仅授登录权限仍可执行查询的问题

限制用户查询information_schema.tables的方法

默认情况下,PostgreSQL的public角色对information_schema下的多数视图(包括tables)拥有SELECT权限,新创建的用户默认会继承public的权限——哪怕你只给了用户LOGIN权限、没配置其他成员身份,用户依然能通过继承的权限查询该视图。以下是具体解决步骤:

1. 撤销特定用户的查询权限

如果只想限制单个用户执行该查询,直接撤销该用户对information_schema.tables的SELECT权限:

REVOKE SELECT ON information_schema.tables FROM '你的用户名';

2. 全局撤销public角色的权限(影响所有普通用户)

如果要让所有无特殊权限的用户都无法查询该视图,可撤销public角色的对应权限:

REVOKE SELECT ON information_schema.tables FROM public;

注:超级用户不受此权限限制,依然能正常查询。

3. 创建用户时避免继承public权限

如果是新建用户,可在创建时指定NOINHERIT,让用户不继承public角色的任何权限:

CREATE USER 新用户名 WITH LOGIN NOINHERIT;

这样创建的用户默认只能登录,没有任何查询系统视图或普通表的权限。

验证权限是否生效

执行完上述操作后,用目标用户登录,再次执行SELECT * FROM information_schema."tables",应该会收到权限不足的报错。

内容的提问来源于stack exchange,提问作者Shahar Shokrani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:52:20