授予用户执行CRUD的角色和特权是什么(在Oracle 12上)

时间:2019-02-03 07:57:03

标签: oracle oracle12c toad

我正在使用 TOAD Oracle 12 c 数据库上创建 USER

创建 TABLESPACE 后,我将创建 USER 。我对可以赋予用户的许多 ROLES PRIVILEGES 感到困惑。

为了执行 CRUD 操作并能够“编辑”数据库(创建或删除表,删除模式ecc),必须授予用户的最低/标准角色和特权是什么?来自TOAD?

谢谢

3 个答案:

答案 0 :(得分:1)

指向the documentation - Privileges

的链接

授予用户以下特权:

  • 创建会话(以允许用户连接到数据库)
  • 插入
  • 更新
  • 删除
  • 选择

使用以下命令向用户授予特权(您需要以SYS或SYSTEM身份或具有GRANT特权的其他用户身份登录):

GRANT CREATE SESSION, SELECT, UPDATE, DETETE, INSERT TO user_name

答案 1 :(得分:1)

这取决于您要执行的操作。如果您只想使用自己的数据库架构中的表,那么通常具有以下特权即可启动:

    userName= raw_input("Enter user's name: ")
    with open('listOfUsers.json') as f:
        data = json.load(f)

    for k, v in data.items():
        print str(dict[k][v])

您具有插入/更新/删除/选择自己拥有的表的默认权限。

表空间配额:

grant create session to <your_user>;
grant create table to <your_user>;

最好为用户设置默认表空间。在这种情况下,您可以在create table语句中省略表空间名称。

alter user <your_user> quota unlimited on <your_tablespace_name>;

答案 2 :(得分:1)

这是您可能(或可能不想)遵循的建议。

作为特权用户(例如SYS),检查数据库中可用的表空间。我正在使用11g XE(Express Edition),它显示以下内容:

SQL> show user
USER is "SYS"
SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1        
TEMP            --> temporary
USERS           --> my data

现在,创建一个用户:

SQL> create user mdp identified by pdm
  2  default tablespace users
  3  temporary tablespace temp
  4  quota unlimited on users;

User created.

很久以前,有两个流行的预定义角色,分别为CONNECT和RESOURCE,它们被授予了一些最频繁的特权,因此人们很喜欢,将这些角色授予新创建的用户。

>

如今,您不应该这样做:仅授予用户可能需要的最小特权集。第一个是CREATE SESSION;没有它,您的用户甚至无法建立连接。

SQL> grant create session to mdp;

Grant succeeded.

然后,您将要创建一些表,因此-授予它:

SQL> grant create table to mdp;

Grant succeeded.

好,让我们以新创建的用户身份连接并做点事情

SQL> connect mdp/pdm@xe
Connected.
SQL> create table test (id number);

Table created.

SQL> insert into test id values (1);

1 row created.

SQL> drop table test;

Table dropped.

SQL>

好;我可以创建表,从中插入/更新/删除/选择。首先,这已经足够了。但是,当事实证明您想要创建一个视图时,它只有在您授予该特权后才起作用:

SQL> create view v_dual as select * From dual;
create view v_dual as select * From dual
            *
ERROR at line 1:
ORA-01031: insufficient privileges


SQL> connect sys@xe as sysdba
Enter password:
Connected.
SQL> grant create view to mdp;

Grant succeeded.

SQL> connect mdp/pdm@xe
Connected.
SQL> create view v_dual as select * From dual;

View created.

SQL>

以此类推;不要仅仅因为您可能需要它而授予任何东西-如果您需要它何时何地授予它。尤其要注意系统特权,如果您不知道自己在做什么,可能会很危险。