暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

一键生成oracle用户的所有grant脚本

数据库驾驶舱 2024-05-21
49

背景

在Oracle数据库管理中,了解和管理用户权限是确保数据安全和系统正常运行的重要部分。数据库管理员(DBA)需要能够快速查询和验证某个用户的权限,以便进行审计、故障排除和权限管理。在Oracle数据库中,可以通过查询数据字典视图来快速获取某个用户的所有权限。

下面的脚本,可以一键生成oracle用户的所有权限


ACCEPT username CHAR PROMPT 'Enter username: '
scott  -- 示例手动输入scott
column USERUPPER new_value USERUPPER
select upper('&username'as USERUPPER from dual;
set linesize 120 pagesize 1000
set echo off
set heading off
set feedback off
select 'grant '||tt.granted_role||' to '||tt.grantee||';' as SQL_text
from dba_role_privs tt where tt.grantee=(upper('&USERUPPER'))
union all
select 'grant '||tt.privilege||' to '||tt.grantee||';'
from dba_sys_privs tt where tt.grantee=(upper('&USERUPPER'))
union all
select 'grant '||tt.privilege||' on '||owner||'.'||table_name||' to '||tt.grantee||';'
from dba_tab_privs tt where tt.grantee=(upper('&USERUPPER'))
union all
select 'alter user '||tt.user_name||' quota '||maxblocks*blocksize||' on '||ts_name||';'
from KU$_TSQUOTA_VIEW tt where tt.user_name=(upper('&USERUPPER'));

-- 结果
grant RESOURCE to SCOTT;
grant CONNECT to SCOTT;
grant UNLIMITED TABLESPACE to SCOTT;
grant SELECT on SYS.V_$MYSTAT to SCOTT;
grant SELECT on SYS.V_$STATNAME to SCOTT;
grant EXECUTE on SYS.UTL_I18N to SCOTT;
grant EXECUTE on SYS.DBMS_CRYPTO to SCOTT;

复制

总结

快速查询Oracle用户的所有权限对于数据库管理和安全审计至关重要。通过查询 DBA_SYS_PRIVS
DBA_TAB_PRIVS
 和 DBA_ROLE_PRIVS
 视图,数据库管理员可以全面了解用户的权限配置。本文提供的综合查询脚本可以一次性获取用户的系统权限、对象权限和角色权限,简化了权限管理过程。定期检查和管理用户权限,有助于维护数据库系统的安全性和稳定性。

「欢迎关注我们的公众号,获取更多技术分享与经验交流。」


文章转载自数据库驾驶舱,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论