在Oracle中授予“创建目录”权限

13

我希望在Oracle 10中运行CREATE DIRECTORY查询,但是它给我返回了权限不足的错误。

有人能告诉我如何通过系统以用户身份授予我的用户这种权限吗?

2个回答

19

根据Oracle 10gR2文档

您必须拥有CREATE ANY DIRECTORY系统权限才能创建目录。

您可以使用以下命令将该权限授予将要创建目录的模式:

SQL> GRANT CREATE ANY DIRECTORY TO vnz;

Grant succeeded

像使用权限 ANY 一样,谨慎地授权给用户。这是一个极为强大的权限,最好只留给数据库管理员。


3
这是一个非常危险的权限,因为它可以通过PL/SQL让Oracle看到服务器上任何操作系统目录,包括Oracle安装目录本身和数据文件。 - Gary Myers
如何撤销此授权? - Sandun Chathuranga
@SandunChathuranga 使用 REVOKE 命令。 - Vincent Malgrat
@VincentMalgrat,不知道你是否介意帮我查看一下我的问题(链接:https://stackoverflow.com/questions/44142383/oracle-how-to-grant-create-any-directory-with-the-restriction-that-all-directori ),关于如何授权创建一个目录并限制该目录为指定目录内部的子目录。 - Matthew Moisen
@MatthewMoisen 我认为无法限制CREATE ANY权限。也许您可以在具有此特权的模式中创建一个过程/包,该过程/包将在执行子目录规则的同时创建目录。此包将创建目录并向当前用户授予其上的权限。您将向用户授予此包的EXECUTE权限。 - Vincent Malgrat
像往常一样,Oracle的权限管理是一个大麻烦。我不得不使用这个来查看备份中有哪些表。 - Paul McCarthy

4

来自 Oracle 文档:

"您必须拥有 CREATE ANY DIRECTORY 系统特权才能创建目录。"

因此,

将 CREATE ANY DIRECTORY 特权授予 userOfInterest 用户;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接