在大型数据库系统中,随着模式(schema)和表数量的增长,手动为每个表执行GRANT SELECT ON TABLE变得不可持续。尤其当需要为特定角色或用户赋予跨多个schema的只读访问权限时,效率低下且易出错。

更复杂的是,新创建的表不会自动继承已有权限,这要求我们不仅处理当前对象,还需配置默认权限机制以覆盖未来对象。此外,过度开放权限可能带来安全风险,如敏感数据泄露或越权访问。

因此,目标是实现:自动化、可维护、安全可控的批量授权策略。

授权模式权限

在授予表权限之前需要先给用户授予模式的访问权限,否则用户访问不了模式就算有了表的权限也没用

GRANT USAGE ON SCHEMA 模式名 TO 用户名;

单表授权

‌插入(INSERT)权限‌

GRANT INSERT ON 表名 TO 用户名;

‌更新(UPDATE)权限‌

GRANT UPDATE ON 表名 TO 用户名;

‌删除(DELETE)权限‌

GRANT DELETE ON 表名 TO 用户名;

所有权限

GRANT ALL PRIVILEGES ON 表名 TO 用户名;

撤销授权

REVOKE ALL PRIVILEGES ON 表名 FROM 用户名;

授权模式下所有表权限

GRANT SELECT ON ALL TABLES IN SCHEMA 模式名 TO 用户名;

授予未来创建的表的查询权限

如果你还希望该用户能够对未来创建的表自动拥有查询权限,你可以使用ALTER DEFAULT PRIVILEGES命令

ALTER DEFAULT PRIVILEGES IN SCHEMA 模式名 GRANT SELECT ON TABLES TO 用户名;