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

What are roles and privileges to give a user in order to perform CRUD(on Oracle 12)

我正在使用 TOADOracle 12 c 数据库上创建一个 USER

创建 TABLESPACE 后,我正在创建 USER。我对可以授予用户的许多 ROLESPRIVILEGES 有点困惑。

为了执行 CRUD 操作并能够 'edit' 数据库(创建或从 TOAD 中删除 table, DROP the schema ecc)?

谢谢

一个link到the documentation - Privileges


授予用户以下权限:

  • CREATE SESSION(为了让用户连接到数据库)
  • 插入
  • 更新
  • 删除
  • SELECT

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

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

这取决于你要执行什么操作。如果您只想在自己的数据库架构中使用 tables,那么通常以下权限就足以启动:

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

您拥有您拥有的 insert/update/delete/select table 的默认权利。

表空间配额:

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

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

alter user <your_user> default tablespace <your_tablespace_name>;

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

作为特权用户(例如 SYS),检查数据库中可用的表空间。我使用的是 11g XE(Express 版),显示如下:

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>

不错;我可以从中创建表格 insert/update/delete/select。对于开始,这就足够了。然而,当事实证明你想要,例如,创建一个视图,它不会工作,直到你授予它该权限:

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>

等等;不要仅仅因为您可能需要它就授予任何东西 - 授予它当您需要它时。特别要注意系统权限,如果您不知道自己在做什么,这可能会很危险。