在大型数据库系统中,随着模式(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 用户名;