Oracle 查询已存在账号的创建语句、权限信息

set linesize 200
set long 100000
set wrap on
col "Create_User_DDL" for a200 wrapped word
define UserName="'VINCENT'"
-- 修改 UserName,查询其他的已存在账号

select dbms_metadata.get_ddl('USER',&UserName) "Create_User_DDL"
  from dual;
-- 结果 IDENTIFIED BY VALUES 后面的一串乱码就是密码的密值
-- 你可以 alter user XXX identified by 'XXX'; 修改密码搞破坏
-- 然后根据密值 alter user XXX identified by values 'xxxx';
-- 还原密码,神不知那个神不晓
-- 当然你有管理员权限,再去改其他用户的密码,本身就是画蛇添足...
select dbms_metadata.get_granted_ddl('SYSTEM_GRANT',&UserName) "Grant dba_sys_privs DDL" from dual;
-- dba_sys_privs
select dbms_metadata.get_granted_ddl('ROLE_GRANT',&UserName) "Grant dba_sys_privs DDL" from dual;
-- dba_role_privs


-- 通过查询权限表生成授权语句的方法,和get_granted_ddl的方法二选一即可
select 'grant '||PRIVILEGE||' to '||GRANTEE||
  decode(ADMIN_OPTION,'NO',';','YES',' with admin option;')
  "Grant dba_sys_privs DDL"
  from dba_sys_privs where grantee=&UserName;

select 'grant '||GRANTED_ROLE||' to '||GRANTEE||
  decode(ADMIN_OPTION,'NO',';','YES',' with admin option;')
  "Grant dba_sys_privs DDL"
  from dba_role_privs where grantee=&UserName;

-- 如果一个用户只被授予了RESOURCE,CONNECT两个角色
-- 也就是一个基本的业务账号权限
-- 那么它拥有的dba_sys_privs只有一个:'UNLIMITED TABLESPACE'
-- 拥有的 dba_role_privs有两个:'RESOURCE','CONNECT'
-- 并且这仨权限ADMIN_OPTION均为 'NO'
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值