【问题标题】:How can I grant privileges of an exisisting user to a user I created in Oracle? Thanks如何将现有用户的权限授予我在 Oracle 中创建的用户?谢谢
【发布时间】:2020-12-15 16:34:49
【问题描述】:

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

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

Grant all on HR to myUser;

cmd 找不到 HR 用户。 谢谢!

【问题讨论】:

  • 没有真正的 sql 解决方案可以解决这个问题,也就是克隆用户或创建用户……但是,GUI 可以帮助您thatjeffsmith.com/archive/2015/12/…
  • 该语法(将 HR 上的所有权限授予 myUser)不是在查找用户 HR,而是在发出命令的连接用户的架构中查找名为 HR 的表或过程。在您开始自己使用之前,请查阅有关命令的官方文档。正如 Littlefoot 所说,您需要编写一个脚本来创建您需要的实际 GRANT 命令。而且,正如他所说,最好将这些授予 ROLE,然后将 ROLE 授予用户。

标签: database oracle oracle-sqldeveloper privileges user-permissions


【解决方案1】:

我认为你错了。

据我所知,有两种特权:

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

没有简单的方法可以将一位用户的“全部”(顺便说一句,您如何称呼“全部”?)授予另一位用户。您可以授予例如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>

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    相关资源
    最近更新 更多