如何将现有用户的权限授予我在 Oracle 中创建的用户?谢谢
Posted
技术标签:
【中文标题】如何将现有用户的权限授予我在 Oracle 中创建的用户?谢谢【英文标题】:How can I grant privileges of an exisisting user to a user I created in Oracle? Thanks 【发布时间】: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 授予用户。 【参考方案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>
如果你把它放到一个文件中,你会得到一个可以执行的脚本。
或者,更好的是,考虑创建一个角色,为其授予所需的权限,然后将角色授予其他用户。
【讨论】:
以上是关于如何将现有用户的权限授予我在 Oracle 中创建的用户?谢谢的主要内容,如果未能解决你的问题,请参考以下文章