Oracle数据库中如何将HR Schema的权限赋予developer_user角色?
解决Oracle中复制HR权限到developer_user角色的问题
你之前使用的SQL语法不符合Oracle规范,Oracle不支持GRANT all privileges from dba_sys_privs to ... where ...这类写法。要将HR拥有的权限完整复制到developer_user角色,需分场景生成对应的授权语句并执行:
1. 复制系统权限
先查询HR拥有的系统权限,自动生成授权语句:
SELECT 'GRANT ' || privilege || ' TO developer_user;' FROM dba_sys_privs WHERE grantee = 'HR';
执行该查询后,会得到一系列GRANT 权限名 TO developer_user;格式的语句,将这些语句复制出来执行即可完成系统权限的授予。
2. 复制对象权限
如果HR拥有其他用户对象(如其他Schema的表、视图)的访问权限,用以下语句生成授权脚本:
SELECT 'GRANT ' || privilege || ' ON ' || owner || '.' || table_name || ' TO developer_user;' FROM dba_tab_privs WHERE grantee = 'HR';
同样,复制查询结果中的语句执行,即可完成对象权限的复制。
3. 复制角色权限
若HR被授予了其他角色,要将这些角色也赋予developer_user,使用:
SELECT 'GRANT ' || granted_role || ' TO developer_user;' FROM dba_role_privs WHERE grantee = 'HR';
注意
执行生成的授权语句前,确保当前操作的用户拥有GRANT ANY PRIVILEGE或对应权限的授予权限。
内容的提问来源于stack exchange,提问作者Zakariae Laaliji
相关产品推荐
相关产品推荐

