Oracle向已拥有表全量权限的用户重复授予SELECT权限会有什么结果
重复执行SELECT授权的实际影响
- 对于MySQL、PostgreSQL、Oracle、SQL Server等主流遵循SQL标准的关系型数据库,在用户已经持有对应权限的前提下重复执行授权语句,不会对现有权限配置产生任何破坏性修改
- 数据库会直接判定本次授予的SELECT权限已存在,属于冗余操作,仅返回执行成功的提示,既不会覆盖、移除用户已持有的INSERT、UPDATE、DELETE、REFERENCES等其他权限,也不会重复叠加记录同一项权限
- 仅部分老旧的非标数据库可能会抛出「权限已存在」的警告,仍不会修改现有权限配置
生产环境可选前置校验操作
如果希望提前确认用户权限避免冗余操作,可以对应数据库类型执行查询语句校验:
- MySQL 环境:
SHOW GRANTS FOR 'user1'@'对应访问主机地址'; - PostgreSQL 环境:
SELECT * FROM information_schema.role_table_grants WHERE grantee = 'user1' AND table_name = 'table1'; - Oracle 环境:
SELECT * FROM dba_tab_privs WHERE grantee = 'USER1' AND table_name = 'TABLE1';
内容的提问来源于stack exchange,提问作者Umesh Bichukale
相关产品推荐
相关产品推荐

