SQL Server与Oracle对比学习:权限管理(一)
http://blog.csdn.net/weiwenhp/article/details/8093661
我们发现我们现在的生活中到处是涉及到密码,你要记各种各样的密码.比如银行卡,邮件,QQ,微博,游戏,各种网站会员.
使用数据库自然也不例外,得先整个用户名和密码才能登进去使用里面的数据啊.虽然也有啥windows验证不用你输密码了,但那实际上也是需要你登陆windwos的用户名和密码.
Oracle权限管理
创建用户
create user arwenidentifiedby abc; --创建了用户名为arwen密码为abc的用户
如果你要改密码就是
alter userarwenidentifiedby abc123;--把密码改为abc123
shcema与表空间
当然做上面的操作你一般要用个权限较多的用户去做.一般刚开始都是用sys或system用户去创建一些新用户.创立一个新用户的时候同时默认创建一个schema,相当于在表空间中给你分一块空间给你.shcema相当于是一块空间.但由于用户与schema是一一对应而且完全绑定在一起不分开所以也能把它们完全等同.上面创建用户时没指定表空间,系统会处理这种情况.当发现某用户创立时没指定表空间会提供一个默认的表空间,一般是system表空间.但你也可以通过如下语句修改
alter databasedefaulttablespaceusers;
这样一改后前面创建的用户arwen的默认分配的表空间就是users了.当然你还可以创建时显式指定arwen的表空间
create user arwenidentifiedby abc123defaulttablespacesystem;
或者创建完了之后显式更改表空间
alter user arwendefaulttablespace myspace;
等上面的用户建好之后你一看发现竟然登不了.这很不符合常理吧.以前还真没碰到过创建用户成功后竟然不能登陆的.我们一般都是能直接登进去,最多是第一次登的时候被强制要求先改下密码.于是你刚开始会想会不会是新创建的用户被locked住了.像装好Oracle后会默认有一些用户比如scott,是被lock住的.你可以这样解锁
alter user scott accountunlock;
你如果要锁住scott的话自然就是alter user scott accountlock;
但此时的新建用户不是属于这种情况,还是属于没权限.仅仅是连接连接数据库也要需要单独的一个权限.(sql server中是没有这种权限的,创建了用户就直接能连数据库的.等会再讨论为啥oracle要单独整个这权限出来)
赋予系统权限
要连接数据库得有create session的权限.Oracle中每一个连接就叫作一个session(会话).用如下语句赋予权限
grant createsessiontoarwen;
但你这时虽然能登陆了,但登进去发现里面啥都没有,你也啥都不能做,查找不了其他用户的表或自己创建表.当然还有些不存在啥保密的信息你还是能看,比如
select *from v$version; --查看版本信息
那如果要做其他啥事咋整啊,得继续要被赋予权限啊.所以在oracle中差不多没有啥操作是理所当然就能去做的.必须得有一个个的权限了才能去做.Oracle中的权限划分的非常细.虽然这样挺麻烦的,但极大的保证了安全性.
赋予权限一般有两种方式
1.通过grant语句把一个个细分的权限赋予某个用户,就像上面那样用.
很显然如果要赋予用户上百个权限,而同时要创建上百个用户,你一个个的敲得敲得你手发软,于是就有另外一种方法
2.先创建一个角色,然后把各种权限赋予这个角色.然后你创建用户的时候可以把这个角色赋予他.这样新用户就拥有了所有角色的权限.
实际上这有点像面向对象中的继承,子类继承了父类就继承了父类的财产了啊.角色像父类,用户像子类.
创建角色
create role father;
grant create table to father;
grant father to arwen;
上面先创建一个角色father,然后赋予角色建表权限,然后把角色赋给用户arwen.此时arwen也具有了建表权限.我们知道面向对象中父类还能再继承父类.那这里角色还能被赋予角色,比如oracle中默认有角色resource
grant resource to father;
赋予对象权限(object privileges)
大部分时候我们指的权限是系统权限,一般是泛指,范围较广.比如具有建表,查询表的权限啊.而对象权限是从较细的范围讲.比如让你具有对某一个对象(具体的某一个表或视图等的操作权限).
比如有表tmp.则grant select on tmp to arwen.表示arwen具有了访问表tmp的权限,但没权限访问其他任何表.
赋予权限的权限
联级赋予系统权限(with admin option)
看了这么多赋予权限的方式你可能会问难道赋予权限都得sys这样的超级用户去做嘛.那多累啊.自然不是啊.你还可以让其他用户也有赋予别人的权限.举例
先通过sys用户, grant create table to arwen with admin option;--加上with admin option这个修饰就表示arwen也可以把建表的权限接着赋予其他用户了.这是一种具有传递性的赋权方式.而且假如arwen通过grant create table to weiwen赋予用户weiwen建表权限后,如果啥时arwen自己的建表权限被回收了.weiwen的建表权限还在
联级赋予对象权限(with grant option)
另外还有grant select on emp to arwen with grant option; --也跟上面一样表示arwen也可以把查表tmp的权限再接着赋予其他用户
arwen通过grant select on emp to weiwen with grant option; --与系统权限不同,如果arwen的权限被回收后,weiwen的查表权限也没了.
如果weiwen又通过grant select on emp to test ; --赋权给test.当arwen或weiwen任意一个被取消权限了它也被取消.就像一个继承层次一样.前面的权限被取消了后面的也没了.
回收权限
我们知道赋予了权限肯定还能回收,
很简单,赋予权限是grant ... to ...
回收就是revoke ... from ...
例如revoke create table from arwen;
为什么会有create session权限
关于这个权限很有争议.因为没有这个权限其实也是可以的,而且这权限很容易误导人.比如创建了用户竟然还不能登陆有点不全常理.在sql server中也没有这样的权限.那在oracle中它到底有什么作用呢?
我觉得create session有个蛮重要的作用就是起lock的作用.比如说我们在某些情况想lock住一个用户.像发现用户账号有异常或此用户因某员工离职先暂时lock住.你回收了create session权限就不能连接了,跟lock住的作用完全一样.而且你可以同时回收create session权限和lock住.双保险啊.
另外如果想锁住用户时,你又没lock它的权限时你就只能回收create session了.
SQL Server与Oracle对比学习:权限管理(一)的更多相关文章
- SQL Server与Oracle对比学习:权限管理(二) 一些有趣的比喻
http://blog.csdn.net/weiwenhp/article/details/8094739 目录(?)[-] SQL Server权限管理 login 与user的区别 角色role ...
- SQL Server与Oracle对比学习:表的管理和组织
http://blog.csdn.net/weiwenhp/article/details/8088979 我们知道数据库,顾名思义.最重要的东东就是管理数据,而数据在系统中主要是保存在表(table ...
- 数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接
前言 DataGrip:Jet Brains出品的一款数据库管理工具(没错,是Jet Brains出品,必属精品).DataGrip整合集成了当前主流数据库(如:SQL Server, MySQL, ...
- 【转】SQL Server、Oracle、MySQL和Vertica数据库常用函数对比
SQL Server.Oracle.MySQL和Vertica数据库常用函数对比 Vertica数据库是HP公司新收购的用于BI方面的数据库. 1. 绝对值 S:select abs(-1) valu ...
- Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决
Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决 I. 概述 1.1 JDBC概念 JDBC(Java Database Connectivity ...
- 使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务
使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务 作者:Nikolay Manchev 分步构建一个跨这些平台的 ...
- ASP.NET 连接 SQL Server 和 Oracle 教程
临近期末,有很多同学都问我怎么关于ASP.NET 连接 SQL Server 和 Oracle 的问题.由于人太多了,我也不能一一去帮忙,就写了这篇博客.希望对大家有用处. 首先,前期准备是要安装数据 ...
- 数据库 --> SQL Server 和 Oracle 以及 MySQL 区别
SQL Server 和 Oracle 以及 MySQL 区别 三者是目前市场占有率最高(依安装量而非收入)的关系数据库,而且很有代表性.排行第四的DB2(属IBM公司),与Oracle的定位和架构非 ...
- SQL Server中通用数据库角色权限处理
SQL Server中通用数据库角色权限处理 最近和同事在做数据库权限清理的事情,主要是删除一些账号:取消一些账号的较大的权限等,例如,有一些有db_owner权限,我们取消账号的数据库角色db_ ...
随机推荐
- virtualBox ubuntu 文件共享
如何将主机中的文件共享到虚拟机中: 1. 查看/dev中的文件 命令:ls /dev 2. 找到 cdrom1 ,直接挂载到/mnt 命令:sudo mount /dev/cdrom1 /mnt ...
- 单片机系统与标准PC键盘的接口模块设计
转自单片机系统与标准PC键盘的接口模块设计 概述 在单片机系统中,当输入按键较多时,在硬件设计和软件编程之间总存在着矛盾.对于不同的单片机系统需要进行专用的键盘硬件设计和编程调试,通用性差,使 ...
- 使用 .NET 平台,如何玩转 Universal Windows 应用?
2015年7月30日 本文作者是 Managed Languages 团队项目经理 Lucian Wischik. 不久前,Visual Studio 2015上新增 Windows 10 应用的开发 ...
- 开发的时候,一定要及时控制CPU使用率以及使用内存大小等三个问题(一个星期检查一次)
一直专注于功能的开发,没注意CPU和内存.昨天无意中发现两个问题: 1. 程序启动后,什么都没干,CPU就50%了(单核).现在想找原因降低使用率,感觉无从下手,要是平时就注意这个问题就好了. 2. ...
- 【Xamarin挖墙脚系列:Xamarin开发环境配置需求】
原文:[Xamarin挖墙脚系列:Xamarin开发环境配置需求] 前言 因为操作的全是大块头,加大你们的内存,CPU网上飙.... 卤煮的机器配置 最近的版本部署包,百度云离线下载:版本:Xama ...
- struts一点心得
action中: 设置属性并增加get,set方法,给属性赋值后 (如: private String name; public String getName() { return name; } p ...
- php Laravel 框架 介绍及安装
Laravel是一套简洁.优雅的PHP Web开发框架(PHP Web Framework).它可以让你从面条一样杂乱的代码中解脱出来:它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁.富于 ...
- LiBsvm用于多分类时训练模型参数含义
The 'svmtrain' function returns a model which can be used for futureprediction. It is a structure a ...
- 【HDOJ】3061 Battle
Dinic解网络流模板题目.队列用STL就TLE... /* 3061 */ #include <iostream> #include <string> #include &l ...
- HDU 5961 传递 【图论+拓扑】 (2016年中国大学生程序设计竞赛(合肥))
传递 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem ...