-1

我想向 Oracle 中的特定用户授予选择权限。它可以在mysql中使用以下查询

GRANT SELECT, INSERT, DELETE ON database TO username@'localhost' IDENTIFIED      
BY 'password';

有什么方法可以在 Oracle 中实现这一点?

4

2 回答 2

2

MySQL 所称的“数据库”更类似于 Oracle 所称的“模式”。Oracle 无法将架构中所有对象的权限授予特定用户,您必须单独授予每个对象的权限。您可以使用一些动态 SQL 来简化初始授权

BEGIN
  FOR x IN (SELECT *
              FROM dba_tables
             WHERE owner = <<name of schema>>)
  LOOP
    EXECUTE IMMEDIATE 'GRANT select, insert, delete ON ' || 
                         x.owner || '.' || x.table_name ||
                         ' TO <<username>>';
  END LOOP;
END;

但是,每次在模式中创建新对象时,都需要将新对象的相同权限授予用户,或者需要重新运行上面的 PL/SQL 块。如果您真的愿意,DDL 触发器可以提交一个作业,该作业会在创建新对象时自动授予权限,但不特别推荐这样做。

从可管理性的角度来看,您通常会创建一个角色,该角色将被分配所有这些特权,然后将该角色分配给实际需要这些 DML 特权的任何用户集。这使您可以轻松地将相同的角色分配给组织中需要相同权限集的每个人,而不是nm用户管理对象权限。

于 2012-08-29T13:56:18.243 回答
0

是的,它带有 GRANT 语句: Oracle 文档中的 GRANT

您必须首先使用CREATE USER创建一个用户。

于 2012-08-29T13:49:41.110 回答