Oracle相关知识(2)

思考:如何创建数据库其他用户?什么是表空间?如何创建与删除,怎么对用户进行创建、修改与删除?

1.什么是表空间?
概念:
	可以看做是数据库的逻辑存储空间 ---> 数据库中开辟的空间用来存储数据库对象

表空间与数据文件的关系:
	表空间由一个或多个数据文件组成,数据文件的大小和位置可以自己定义
   
表空间的分类:
	1.永久表空间:数据库中要永久化存储的一些对象,如:表、视图、存储过程
    2.临时表空间:数据库操作时中间执行的过程,执行结束后,存放的内容会被自动释放
    3.撤销表空间:用来帮助会退未提交的事务数据
 
2.表空间的常见操作
1.查看用户的表空间:
	数据字典 
		dba_tablespaces(系统管理员级别查看的数据字典)
		user_tablespaces(普通用户查看的数据字典)
	查看表空间的字段
		desc dba_tablespaces   --- 注意不要在PL/SQL中操作
	查看用户的字段信息
		desc dba_users

2.查询系统表空间
	SELECT * FROM User_Tablespaces;
	SELECT * FROM dba_Tablespaces; --- 注意 需要使用system用户登录才能查看

3.管理员角色查看表空间
	SELECT
           file_name,tablespace_name,bytes,autoextensible
    FROM Dba_Data_Files
    WHERE Tablespace_name='USERS';  --- 注意 tablespace_name 需要大写
    注释:查询数据文件中 表空间名称为users的文件存储地址,名称,大小,自增长空间

4.表空间的创建
	scott用户是没有权限直接创建表空间的,所以需要使用system用户进行授权
		grant create tablespace to scott; --- 赋予scott创建表空间的权限
		grant alter tablespace to scott; --- 赋予scott修改表空间的权限
		grant drop tablespace to scott; --- 赋予scott删除表空间的权限
		grant unlimited tablespace to scott; --- 赋予scott用户可以在其他表空间随意建表
		注意:
			1.系统权限umlimited tablespace是隐含在dba,resource角色中的一个系统权限,当用户
			  得到dba或resource的角色时,unlimited系统权限也隐式授权给用户。
			2.系统权限unlimited不能被授予role,可以被授予用户
			3.系统权限unlimited不会随着resource,dba被授予role而授予用户
	
	创建格式:
		create tablespace 表空间名称 datafile '数据文件的绝对路径' size 表空间的大小
	
	删除格式:
		drop tablespace 表空间名称
	
	注意:在进行相应操作时,应该具有相应的操作权限

5.实例:
	1.创建名为 zhang的表空间,并设置自动增长表空间的文件大小,每次增加10M。一直到2G
            CREATE TABLESPACE zhang DATAFILE  
            '绝对路径'
            SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE 2G;
            注意:autoextend 是自动增加表空间的 类似自增长
    
    2.查看创建的表空间
    	SELECT * FROM dba_data_files t WHERE t.tablespace_name = 'ZHANG';
    	注意:该操作在system用户下完成
    
    3.给表空间增加大小
    	alter database datafile ‘绝对路径' resize 50M
    	或者
    	alter tablespace zhang add datafile '绝对路径2' size 10M
    	
	
		
3.用户的相关操作
1.概念:
	数据库中内置了很多用户,有时我们需要创建一个自己的用户。在Oracle中一个数据库对应多个用户,而
MySQL中是一个用户对应着对个数据库。

2.用户的创建语法:
	create user 用户名 identified by 口令
	还有一些可省略的参数,暂时不写

3.在用户创建之前需要先进行授权
	GRANT CREATE USER TO scott;
    GRANT ALTER USER TO scott;
    GRANT DROP USER TO scott;

4.实例:
	1.创建用户test,并设置密码也是test
		create user test identified by test;
	
	2.修改用户的口令为 test2
		alter user tets identified by test2;

5.用户的管理
	新创建的用户是没有任何权限的,包括创建会话的权限都没有,所以在创建的同时我们可以进行解锁
		create user 用户名 identified by 密码 account nulock;
		提示:
			alter user 用户名 account nulock;
	1.为新创建的权限进行授权
		grant connect to 用户名
	2.让用户具有查询scott用户下的dept表的权限
		grant select on scott.dept to test;
	3.删除用户
		drop user 用户名;
		
		注意:在删除用户的时候,如果被删除的用户下存在对象,比如视图、表等,则系统会提示不能删除此用户,
			 如果要强制删除,需要加上CASCADE,代表先删除该用户下的所有对象,一般情况下,为了安全考虑
			 都不会使用该参数。例如:
			 					drop user test cascade;


4.给用户分配权限
引导:上面提到过,新创建的用户是不拥有任何权限的,所有为了方便实际使用,我们会给用户进行相应的权限分配

1.权限的分类
	概念:权限就是用来控制特定的用户发送特定的SQL语句是否允许正确的执行
	why: 在多用户的环境,DBA需要维护数据库访问的安全,以确保特定用户拥有特定的操作权限
	数据库的权限:
		系统权限
		对象权限
	系统权限 --- 针对用户而言的:
		系统规定用户使用数据库的权限,例如:
			create session  : 允许新创建的用户开启会话,类似create connect
			create  table :  允许用户创建表
			create sequence:创建序列用的
			create view:创建视图
			create procedure:创建存储过程
	
	对象权限 --- 针对表或视图而言的:
		某种权限用户对其它用户的表或视图的存取权限,例如:
			alter:修改字段
			select:查询
			insert:插入
			update:修改数据
			delete:删除数据
			
	1.1 系统实例:
    	1.修改所有的表的权限
    		alter any table   --- 修改表结构
    	2.查询任何表的权限
    		select any table  --- 查询任意表
    	注意: 不针对对象的权限,就是系统权限。所以这两个权限也是系统权限。

系统权限:
	分配语法:grant 权限 to 用户名;
	例如:
		给test用户分配权限:
	
	查询当前用户所拥有的系统权限
		select * from user_sys_privs;
SQL语句含义
grant create session to test授权用户可以连接到数据库
grant create table to test授权用户可以创建表
grant insert any table to test授权用户可以插入表的权限
grant update any table to test修改表数据的权限
grant unlimited tablespace to test授权可以使用表空间
grant create user to test授权用户可以创建用户
grant drop user to test授权可以删除用户
对象权限
	语法:grant 权限 on schema.对象名 to 用户名
	
	查询当前用户拥有的对象权限:
		select * from user_tab_privs;

常用方法:
SQL语句含义
grant select On 对象名 to 用户名将查询权限赋予某人
grant insert on 对象名 to 用户名将添加数据权限赋予给某人
grant all on 对象名 to 用户名将对象上所有的权限都赋予给用户
grant insert on 对象名 to public将插入权限赋予给所有的用户
grant select,update,insert on 对象名 to 用户名将查询 更新 插入权限赋予用户
grant all on scott.dept to user2;将对象的所有权限赋予user2
grant all on scott.dept to public;将对scott用户下的dept表的所有权限赋予所有用户

注意1:

​ 1.public表示是所有的用户,这里的all权限不包括drop

​ 2.当权限控制在表列级别上:

​ grant update(列名) on 表名 to 用户名 — 只能修改表中的固定列

​ grant insert(列名) On 表名 to 用户名 ---- 只能插入表中固定的列

注意2:

​ 查询select,删除delete不能控制到列级别

2.权限的管理与传递
	概念:可以将自己拥有的权限继续分配给别人
	系统权限传递:
		grant 权限 to 用户名  with admin option  --- 关键字:with admin option
	对象权限传递:
		grant 权限 to 用户名 with grant option --- 关键字: with grant option
	
	权限的管理:
		级联授权(对象权限,with grant option):
			grant 权限 to 用户名 with grant option;
			例如:
				grant all on scoot.dept to 用户名 with grant option;
		级联授权(系统权限,with admin option)
			grant 系统权限 to 用户名 with admin option;
			例如:
				grant create user to 用户名 with admin option;

		解除用户权限 --- revoke:
			语法:revoke 权限 from 用户名;
			例如:
				revoke  select on scott.emp from 用户名; 撤销该用的对象权限
				revoke  create user from 用户名; 撤销该用户创建用户的系统权限

admin 与 grant 的区别:
	admin:
        当给一个用户授予系统权限时带上with admin option,在revoke授予这个用户系统权限时不会级联回收授		予给其他用户的权限,类似于浅拷贝与深拷贝中的深拷贝。
     
    grant:
    	当给一个用户授予对象权限的参数带上with grant option,在revoke授予这个用户的系统权限时,会级联		收回对象权限。

5.关于角色
概念:角色类似于演员的身份,比如剧本中的皇上(权利) <--- 如果你拥有这个角色,那么相对的你也就拥有了相应的权	  限。
语法:
	create role 角色名称; --- 创建一个角色
给创建的角色授权:
	grant select on scott.emp to 角色名称;
为用户授予某个角色:
	grant 角色名称 to 用户名称;
删除角色:
	drop role 角色名称;

注意:
	1.不能将unlimited tablespace权限授予角色

系统中默认建好的几个常用角色:
	1.DBA:拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构
	2.resource:拥有resource权限的用户只可以创建实体,不可以创建数据库结构
	3.connect:拥有connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构
6.关于同义词
概念:为了方便的使用他人的表,类似于mysql中的 as 起别名。是指为表、视图、序列、存储函数
	 、包、快照或其他同义词等起的另外一个名字。使用同义词为了安全和方便。
好处:
	1.引用对象不需要指出对象的持有者
	2.引用对象不需要指出它所在的数据库
	3.为对象提供另外一个名字
	
创建同义词:
	语法: create [public] synonym 同义词名 for 对象名
	例如:为scott.emp创建名为emp2的同义词
		create public synonym emp2 for scott.emp;
	注意:
		1.public代表该同义词的类型为公用,否则为私有
		2.在同一用户下不能出现相同名称的两个对象
		3.虽然是公共的同义词,其他的用户访问的时候也需要有相应的权限
		4.如果表名和同义词相同的情况下,访问的是当前用户下的表名,如
		  果当前用户下emp表不存在,则访问公共的同义词。

7.本文总结
表空间 --->  创建  修改   删除   --->权限
用户   ---> 创建  修改  删除用户  --->权限
权限  ---> 系统权限  对象权限  只有insert和update能针对列字段
级联授权 with admin option    with grant option
同义词 --->给对象去别名
public 公共的
此时已莺飞草长 我们正在路上。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值