如何将现有用户的权限授予我在 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 中创建的用户?谢谢的主要内容,如果未能解决你的问题,请参考以下文章

授予权限以在 oracle sql 过程中创建表

oracle中创建一个用户,只能查看指定的视图,如何授权

我们如何授予用户在 phpmyadmin(cPanel) 中创建数据库的权限?

为用户授予在 postgresql 中创建的任何新表的权限

如何在单个命令中创建目录并授予权限

在 PostgreSQL 中创建/删除索引的用户权限