Oracle创建用户、角色、授权、建表空间

时间:2023-03-09 00:20:36
Oracle创建用户、角色、授权、建表空间

oracle数据库的权限系统分为系统权限与对象权限。系统权限( database system privilege )可以让用户执行特定的命令集。例如,create table权限允许用户创建表,grant any privilege 权限允许用户授予任何系统权限。对象权限( database object privilege )可以让用户能够对各个对象进行某些操作。例如delete权限允许用户删除表或视图的行,select权限允许用户通过select从表、视图、序列(sequences)或快照(snapshots)中查询信息。

每个oracle用户都有一个名字和口令,并拥有一些由其创建的表、视图和其他资源。oracle角色(role)就是一组权限(privilege)(或者是每个用户根据其状态和条件所需的访问类型)。用户可以给角色授予或赋予指定的权限,然后将角色赋给相应的用户。一个用户也可以直接给其他用户授权。

一、创建用户

oracle内部有两个建好的用户:system和sys。用户可直接登录到system用户以创建其他用户,因为system具有创建别
的用户的 权限。 在安装oracle时,用户或系统管理员首先可以为自己建立一个用户。

语法[创建用户]:
create user 用户名 identified by 口令[即密码];

例子:
create user test identified by test;

语法[更改用户]:
alter user 用户名 identified by 口令[改变的口令];

例子:
alter user test identified by 123456;

二、删除用户

语法:drop
user 用户名;

例子:drop
user test;

若用户拥有对象,则不能直接删除,否则将返回一个错误值。指定关键字cascade,可删除用户所有的对象,然后再删除用户。

语法:

drop user 用户名 cascade;

例子:

drop user test cascade;

三、授权角色

oracle为兼容以前版本,提供三种标准角色(role):connect/resource和dba.

(1)讲解三种标准角色:

1》. connect role(连接角色)

--临时用户,特指不需要建表的用户,通常只赋予他们connect role.

--connect是使用oracle简单权限,这种权限只对其他用户的表有访问权限,包括select/insert/update和delete等。

--拥有connect role 的用户还能够创建表、视图、序列(sequence)、簇(cluster)、同义词(synonym)、回话(session)和其他  数据的链(link)

2》. resource role(资源角色)

--更可靠和正式的数据库用户可以授予resource role。

--resource提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。

3》. dba role(数据库管理员角色)

--dba role拥有所有的系统权限

--包括无限制的空间限额和给其他用户授予各种权限的能力。system由dba用户拥有

(2)授权命令

语法: grant connect, resource to 用户名;

例子: grant connect, resource to test;

(3)撤销权限

语法: revoke connect, resource from 用户名;

列子: revoke connect, resource from test;

四、创建/授权/删除角色

除了前面讲到的三种系统角色----connect、resource和dba,用户还可以在oracle创建自己的role。用户创建的role可以由表或系统权限或两者的组合构成。为了创建role,用户必须具有create role系统权限。

1》创建角色

语法: create role 角色名;

例子: create role testRole;

2》授权角色

语法: grant select on class to 角色名;

列子: grant select on class to testRole;

注:现在,拥有testRole角色的所有用户都具有对class表的select查询权限

3》删除角色

语法: drop role 角色名;

例子: drop role testRole;

注:与testRole角色相关的权限将从数据库全部删除

权限:

  create session

  create table

  unlimited tablespace

  connect

  resource

  dba

  例:

  #sqlplus /nolog

  SQL> conn / as sysdba;

  SQL>create user username identified by password

  SQL> grant dba to username;

  SQL> conn username/password

  SQL> select * from user_sys_privs;

  我们将从创建Oracle用户权限表开始谈起,然后讲解登陆等一般性动作,使大家对Oracle用户权限表有个深入的了解。

  一、创建

  sys;//系统管理员,拥有最高权限

  system;//本地管理员,次高权限

  scott;//普通用户,密码默认为tiger,默认未解锁

  二、登陆

  sqlplus / as sysdba;//登陆sys帐户

  sqlplus sys as sysdba;//同上

  sqlplus scott/tiger;//登陆普通用户scott

  三、管理用户

  create user zhangsan;//在管理员帐户下,创建用户zhangsan

  alert user scott identified by tiger;//修改密码

  四,授予权限

  1、默认的普通用户scott默认未解锁,不能进行那个使用,新建的用户也没有任何权限,必须授予权限

  

  grant create session to zhangsan;//授予zhangsan用户创建session的权限,即登陆权限

  grant unlimited tablespace to zhangsan;//授予zhangsan用户使用表空间的权限

  grant create table to zhangsan;//授予创建表的权限

  grante drop table to zhangsan;//授予删除表的权限

  grant insert table to zhangsan;//插入表的权限

  grant update table to zhangsan;//修改表的权限

  grant all to public;//这条比较重要,授予所有权限(all)给所有用户(public)

  2、oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的,需要互相授权

  

  grant select on tablename to zhangsan;//授予zhangsan用户查看指定表的权限

  grant drop on tablename to zhangsan;//授予删除表的权限

  grant insert on tablename to zhangsan;//授予插入的权限

  grant update on tablename to zhangsan;//授予修改表的权限

  grant insert(id) on tablename to zhangsan;

  grant update(id) on tablename to zhangsan;//授予对指定表特定字段的插入和修改权限,注意,只能是insert和update

  grant alert all table to zhangsan;//授予zhangsan用户alert任意表的权限

  五、撤销权限

  基本语法同grant,关键字为revoke

  六、查看权限

  select * from user_sys_privs;//查看当前用户所有权限

  select * from user_tab_privs;//查看所用用户对表的权限

  七、操作表的用户的表

  

  select * from zhangsan.tablename

  八、权限传递

  即用户A将权限授予B,B可以将操作的权限再授予C,命令如下:

  grant alert table on tablename to zhangsan with admin option;//关键字 with admin option

  grant alert table on tablename to zhangsan with grant option;//关键字 with grant option效果和admin类似

  九、角色

  角色即权限的集合,可以把一个角色授予给用户

  create role myrole;//创建角色

  grant create session to myrole;//将创建session的权限授予myrole

  grant myrole to zhangsan;//授予zhangsan用户myrole的角色

  drop role myrole;删除角色

Oracle建立表空间和用户

  1. 建立表空间和用户的步骤:
  2. 用户
  3. 建立:create user 用户名 identified by "密码";
  4. 授权:grant create session to 用户名;
  5. grant create table to  用户名;
  6. grant create tablespace to  用户名;
  7. grant create view to  用户名;
  1. 表空间
  2. 建立表空间(一般建N个存数据的表空间和一个索引空间):
  3. create tablespace 表空间名
  4. datafile ' 路径(要先建好路径)\***.dbf  ' size *M
  5. tempfile ' 路径\***.dbf ' size *M
  6. autoextend on  --自动增长
  7. --还有一些定义大小的命令,看需要
  8. default storage(
  9. initial 100K,
  10. next 100k,
  11. );
  1. 例子:创建表空间
  2. create tablespace DEMOSPACE
  3. datafile 'E:/oracle_tablespaces/DEMOSPACE_TBSPACE.dbf'
  4. size 1500M
  5. autoextend on next 5M maxsize 3000M;
  6. 删除表空间
  7. drop tablespace DEMOSPACE including contents and datafiles

  1. 用户权限
  2. 授予用户使用表空间的权限:
  3. alter user 用户名 quota unlimited on 表空间;
  4. 或 alter user 用户名 quota *M on 表空间;

完整例子:

  1. --表空间
  2. CREATE TABLESPACE sdt
  3. DATAFILE 'F:\tablespace\demo' size 800M
  4. EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
  5. --索引表空间
  6. CREATE TABLESPACE sdt_Index
  7. DATAFILE 'F:\tablespace\demo' size 512M
  8. EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
  9. --2.建用户
  10. create user demo identified by demo
  11. default tablespace std;
  12. --3.赋权
  13. grant connect,resource to demo;
  14. grant create any sequence to demo;
  15. grant create any table to demo;
  16. grant delete any table to demo;
  17. grant insert any table to demo;
  18. grant select any table to demo;
  19. grant unlimited tablespace to demo;
  20. grant execute any procedure to demo;
  21. grant update any table to demo;
  22. grant create any view to demo;
    1. --导入导出命令
    2. ip导出方式: exp demo/demo@127.0.0.1:1521/orcl file=f:/f.dmp full=y
    3. exp demo/demo@orcl file=f:/f.dmp full=y
    4. imp demo/demo@orcl file=f:/f.dmp full=y ignore=y