MyException - 我的异常网
当前位置:我的异常网» SQL » oracle sql 基础(6):数据控制语言(用户及权限管

oracle sql 基础(6):数据控制语言(用户及权限管理)

www.MyException.Cn  网友分享于:2013-08-14  浏览:0次
oracle sql 基础(六):数据控制语言(用户及权限管理)

       权限是执行特殊SQL语句的权利。数据库管理员 (DBA) 是一个具有授予用户访问数据库及其对象的能力的高级用户。用户需要系统权限来访问数据库,需要对象权限来操纵数据库中对象的内容。用户也可以将被授予的权限给其它用户或者角色,角色是相关权限的命名分组。方案是对象的集合,例如,视图和序列的集合。方案被数据库用户拥有,并且与用户有相同的名字。

      1.创建用户

       DBA通过执行CREATE USER语句来创建用户,在这时用户没有任何权限。DBA可以给用户授予权限,这些权限决定用户能够在数据库级别做什么。语法:

CREATE USER user IDENTIFIED BY password;
--user 是被创建的用户的名字
--password 指定用户必须用该口令登录

       你可以用ALTER USER语句改变你的口令。语法:

ALTER USER user IDENTIFIED BY password;

      2.授权系统权限

       创建了一个用户后,DBA可以指定系统权限给该用户。使用下面的语法:

GRANT privilege[,privilege...] TO user [,user|role,PUBLIC...];
--privilege 指定给用户或角色的权限

       对用户和角色有100多个不同的可用系统权限,系统权限有数据库管理员(DBA)提供。当前会话的系统权限可以在字典视图SESSION_PRIVS中找到。下面是典型的DBA权限:

系统权限 权限的操作
CREATE USER 可以创建其他 Oracle 用户 (需要有 DBA 角色权限)
DROP USER 可以删除另一个用户
DROP ANY TABLE 可以删除在任意方案中的表
BACKUP ANY TABLE 可以备份在任何方案中的任何表
SELECT ANY TABLE 可以查询在任何方案中的表、视图或快照
CREATE ANY TABLE 可以在任何方案中创建表
CREATE SESSION 连接到数据库
CREATE TABLE 在用户的方案中创建表
CREATE SEQUENCE 在用户的方案中创建序列
CREATE VIEW 在用户的方案中创建视图
CREATE PROCEDURE 在用户的方案中创建存储过程、函数或包

      3.创建并授权角色

       角色是命名的可以授予用户的相关权限的组,该方法使得授予、撤回和维护权限容易的多。一个用户可以使用几个角色,并且几个用户也可以被指定相同的角色。角色典型地为数据库应用程序创建。创建和分配角色,首先,DBA必须创建角色,然后,DBA可以分配角色给角色和用户。创建角色语法:

CREATE ROLE role;
--role 要被创建的角色的名字

        DBA创建角色后,可以用GRANT语句给用户指定角色,也可以指定权限给角色。角色用于简化授予和撤消权限的过程,授权角色语法:

GRANT privilege TO role;
GRANT role TO user;

      4.授权并撤销对象权限

       对象权限是在指定的表、视图、序列或过程上执行指定动作的权限或权利。每个对象都有一个特殊的可授予的权限集。可以如下表来理解对象权限:

对象权限 TABLE VIEW SEQUENCE PROCEDURE
ALTER    √  
DELETE  √    
EXECUTE        √
INDEX      
INSERT  √    
REFERENCES  √    
SELECT  √  √  
UPDATE  √    

       不同的对象权限对于不同类型的方案对象的是有用的,一个用户自动拥有包含在该用户的方案中的所有对象权限,一个用户可以授予该用户所拥有的任何方案对象上任何对象权限给另一个用户或角色。授权单位权限语法:

GRANT {object_priv[(columns)]|ALL}
ON object
TO {user|role|PUBLIC}
[WITH GRANT OPTION];
--object_priv 将被授予的对象权限
--ALL 指定所有对象权限
--columns 从一个表或视图中指定被授予权限的列 --ON object 权限被授予的对象 --TO 指定权限被授予谁 --PUBLIC 授予权限给所有用户 --WITH GRANT OPTION 允许被授予权限的人再授予对象权限给其他用户和角色

       为了授予权限到一个对象上,对象必须在你自己拥有的方案中,或者你必须被用WITH GRANT OPTION选项授予了对象权限。任何对象的所有者自动地获得该对象所有对象权限,可以授予任何该对象上的对象权限给任何其他的用户或者数据库的角色。

       可以用REVOKE语句撤消授予其他用户的对象权限。当你用REVOKE语句时,你指定要从用户那里撤消的权限,并且通过WITH GRANT OPTION子句被级联授权的那些用户的权限也将被撤消。撤销单位权限语法:

REVOKE {privilege [,privilege...]|ALL}
ON object
FROM {user[,user...]|role|PUBLIC}
[CASCADE CONSTRAINTS];
--CASCADE CONSTRAINTS 用于删除任何与该对象相关的约束和对象,例如索引、触发器、权限、完整性约束等。

      5.查询已授予的权限

       如果你试图执行一个为授权的操作,例如从你没有删除权限的表中删除行,Oracle服务器将不允许该操作发生。如果你收到Oracle服务器错误信息 “table or view does not exist,”说明发生了下面的错误:指定的表或视图不存在,试图在一个你没有适当权限的表或视图上执行一个操作。你可以通过访问数据字典来查看你所有的权限。下表中描述了各种数据字典视图。

数据字典视图 说明
ROLE_SYS_PRIVS 授予角色的系统权限
ROLE_TAB_PRIVS 授予角色的表权限
USER_ROLE_PRIVS 可由用户访问的角色
USER_TAB_PRIVS_MADE 授予用户的对象上的对象权限
USER_TAB_PRIVS_RECD 授予用户的对象权限
USER_COL_PRIVS_MADE 授予用户对象的列上的对象权限
USER_COL_PRIVS_RECD 授予用户在指定列上的对象权限
USER_SYS_PRIVS 授予用户的系统权限

文章评论

 程序员的样子
程序员的样子
程序员的鄙视链
程序员的鄙视链
漫画:程序员的工作
漫画:程序员的工作
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
程序员都该阅读的书
程序员都该阅读的书
代码女神横空出世
代码女神横空出世
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
我的丈夫是个程序员
我的丈夫是个程序员
程序员应该关注的一些事儿
程序员应该关注的一些事儿
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
旅行,写作,编程
旅行,写作,编程
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
中美印日四国程序员比较
中美印日四国程序员比较
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
编程语言是女人
编程语言是女人
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员和编码员之间的区别
程序员和编码员之间的区别
那些争议最大的编程观点
那些争议最大的编程观点
Java程序员必看电影
Java程序员必看电影
程序员必看的十大电影
程序员必看的十大电影
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
一个程序员的时间管理
一个程序员的时间管理
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
老程序员的下场
老程序员的下场
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
如何成为一名黑客
如何成为一名黑客
10个调试和排错的小建议
10个调试和排错的小建议
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有