首页 > 解决方案 > 如何将现有用户的权限授予我在 Oracle 中创建的用户?谢谢

问题描述

我希望用户拥有特权的用户是(SQL 开发人员中已经存在的 HR)我试过:

create user myUser
Identified by 12345678
default tablespace ts
profile pf
Account unlock;

Grant all on HR to myUser;

cmd 找不到 HR 用户。谢谢!

标签: databaseoracleoracle-sqldeveloperprivilegesuser-permissions

解决方案


我想你弄错了。

据我所知,有两种特权:

  • 系统权限(您没有授予该权限)
  • 对象特权

没有简单的方法可以将一个用户的“全部”(顺便说一句,您称之为“全部”?)授予另一个用户。您可以在某些表上授予 eg select, update, delete... 权限;或者,您可以授予execute对过程或包的特权。但是,所有这些都需要一个接一个地单独完成。

是的,您可以编写一个脚本来为您完成。例如:

SQL> select 'grant all on ' || table_name || ' to mike;' from user_tables;

'GRANTALLON'||TABLE_NAME||'TOMIKE;'
----------------------------------------------------
grant all on EMP to mike;
grant all on DEPT to mike;
grant all on BONUS to mike;
<snip>

SQL> select 'grant execute on ' || object_name || ' to mike;'  from user_procedures;

'GRANTEXECUTEON'||OBJECT_NAME||'TOMIKE;'
--------------------------------------------------------------------------------
grant execute on P_TEST to mike;
grant execute on F_TEST to mike;
<snip>

如果你把它放到一个文件中,你会得到一个可以执行的脚本。

或者,更好的是,考虑创建一个角色,为其授予所需的权限,然后将角色授予另一个用户。


推荐阅读