授予只读权限
更新时间:2026-08-07
背景说明
在PostgreSQL中,并没有一个内置的、名为“只读权限”的预定义角色。您通过控制台执行的“授予只读权限”操作,本质上是帮助您自动执行一系列授予查询相关权限的SQL命令,从而便捷地实现近似只读的效果。
权限说明
- 核心机制:该操作会向目标普通账号授予对指定数据库、模式(Schema)下对象的
CONNECT(连接)、USAGE(使用模式)、SELECT(查询表)等权限,并且不会授予INSERT、UPDATE、DELETE、CREATE、DROP、ALTER等任何写入或变更权限。 - 效果:被授予只读权限的账号,可以查询数据,但无法修改数据或数据结构,满足业务对数据安全访问的控制需求。
注意事项
- 默认Schema:PostgreSQL默认所有用户对
publicschema 拥有CREATE和USAGE权限。为安全起见,建议将业务表放置在自定义的Schema中,而非直接使用publicschema。 - 新建表的权限:默认情况下,为账号授予的只读权限作用于已存在的表和未来创建的表。如果账号有对应的库权限、schema权限,在对应的库、schema下新建表格,账号会默认授予对应表格的只读权限。
操作步骤
- 登录云数据库 RDS 管理控制台。
- 在控制台页面左上角,选择实例所在地域,进入“云数据库 RDS 列表”页面。
- 找到目标 RDS for PostgreSQL 实例,点击其实例名称,进入实例详情页面。
- 在左侧导航栏中单击账号管理。在账号列表中找到您需要操作的普通账号,单击其操作列中的授予只读权限。
-
在弹出的设置权限页面中,您可以根据业务需要:
- 全选:勾选所有数据库和Schema,为账号授予全局只读权限。
- 自定义:手动勾选需要授权的特定数据库或Schema。
- 单击确定按钮,提交修改。
常见问题
-
Q:为什么我授予只读权限后,业务账号无法查询某些表?
- A:请检查该表是否属于您授权范围内的Schema。
-
Q:如何查看一个账号当前的权限?
- A:您可以使用高权限账号登录数据库,执行“SELECT * FROM pg_roles ”,即可看到账号(User)所隶属的角色(Role)和拥有的权限。
评价此篇文章
