第九章 数据库安全
9.1.1创建用户
CREATE USER user_name IDENTIFIED BY password
[DEFAULT TABLESPACE def_tabspace]
[TEMPROARY TABLESPACE temp_tabspace]
一个用户要想连接到数据库上,就必须向该用户授予”创建会话”的权限,也就是CREATE SESSION系统特权
GRANT CREATE SESSION TO Tom
9.1.2修改用户密码
ALTER USER TOM IDENTIFIED BY NEW_password;
PASSWORD 命令可以用来修改当前登录的用户密码,在输入password命令之后,SQL*Plus就会提示先输入原来的密码 ,再输入两次新的密码就可以了
9.1.3删除用户
Drop user tom;
注意:如果要删除的用户模式中包含对象(例如表等),就必须在DROP USER 语句中的要删除的用户名后面加上关键字CASCADE。
常用的系统特权:
CREATE SYNONYM 创建同名对象。同名对象用于引用其他模式中的表
CREATE ANY TABLE在任何模式中创建表
Grant 系统特权名称 to 用户名 WITH ADMIN OPTION;
这样所授权的用户就可以 把这种特权再授予其他用户。
将一种特权授予PUBLIC ,可以将该特权授予所有用户。
9.2.2检查授予用户的系统特权
通过查询user_sys_privs可以检查某个用户具有哪些系统特权。
撤销用户的系统特权
可以使用REVOKE语句撤销某个用户的系统特权。
CONNECT system/manager
REVOKE CREATE TABLE FROM steve;
9.3对象特权
对象特权允许用户对数据库对象执行特定的操作,比如对表执行DML语句。
以tom用户身份连接到数据库上,并向steve用户授予特权:
CONNECT tom/tom_password
GRANT SELECT,INSERT,UPDATE ON store.products TO steve;
GRANT UPDATE (last_name,salary) ON store.employees TO steve;
此处也可以使用GRANT选项,这样所授权的用户就可以把这种特权再授予其他用户。
GRANT SELECT ON store.customers TO steve WITH GRANT OPTION;
注意:当希望所授权的用户可以将对象特权授予其他用户时,使用GRANT 选项;当希望所授权用户将系统特权授予其他用户时,使用ADMIN选项。
检查已授予的对象特权
通过查询user_tab_privs_made可以检查某个用户对哪些表向其他用户开放了哪些对象特权。
通过查询user_col_privs_made可以检查某个用户对哪些列对象向其他用户开放了哪些对象特权。
检查已接受的对象特权
通过查询user_tab_privs_recd可以检查某个用户被授予了哪些表上的哪些对象特权。
通过查询user_col_privs_recd可以检查某个用户被授予了哪些列的对象特权。
同名对象
CONNECT system/manager
GRANT CREATE SYNONYM TO tom
然后,
Connect tom/tom_password
Create synonym customers for store.customers
公用同名对象
可以为表创建公用同名对象。在创建公用同名对象之后,所有的用户都可以看到这个同名对象。
CONNECT system/manager
GRANT CREATE SYNONYM TO tom
然后,
Connect tom/tom_password
Create public synonym products for store.products;
撤销steve用户对customers表的select特权
Revoke select on store.customers from steve;
在撤销steve用户的select on store.customers 特权时----steve已经将这种特权又授予了gail-----gail也同时失去了这种特权。
然而,在撤销用户steve用户的EXECUTE ANY PROCEDURE 特权时-----steve已经将这种特权又授予了gail----gail仍然会保留这种特权。(系统特权不删除关联)
角色就是一组特权,它可以分配一个用户或其他角色。
在增加或删除一个角色的某种特权时,被授予该角色的所有用户和角色都会自动获得新加的特权或自动失去这种特权。
通过查询user_role_privs可以检查已经授予一个用户哪些角色。
检查授予角色的系统特权
通过查询role_sys_privs 可以检查已经授予一个角色哪些系统特权。
通过查询role_tab_privs可以检查已经授予一个角色哪些对象特权。
默认情况下,在将角色授予用户时,就为该用户启用了这个角色。这就是说,在用户连接到数据库上时,就可以自动使用这个角色了。
ALTER ROLE 语句可以用来对角色进行修改,使其变为非默认角色。
CONNECT SYSTEM/MANAGER
ALTER USER steve default role all except overall_manager;
当以steve用户的身份连接到数据库上时,就需要使用SET ROLE 语句启用 overall_manager角色
CONNECT steve/button
SET ROLE overall_manager identified by manager_password;
使用下面的语句就可以清空角色的设置:
Set role none;
从角色中撤销特权:
REVOKE ALL ON products FROM product_manager;
删除角色:DROP ROLE 角色名
分享到:
相关推荐
Oracle Database 10g SQL 开发指南.part2.rar
Oracle Database 10g SQL 开发指南.part1.rar
Oracle Database 10g SQL开发指南 中文目录
《oracle database 10g sql 开发指南》书中的源码
清华大学出版社出版的《Oracle database 11g SQL开发指南》,本书是由著名的Oracle大师Joson Price著。 学习通过编写SQL语句并构建PL/SQL程序来访问Oracle数据库。完全涵盖了最新版本Oracle数据库的功能和技术,指导...
Oracle Database 10g SQL 开发指南
Oracle Database 10g SQL 开发指南
oracle database 11g sql 开发指南 书中脚本
英文的 中文的有些难找 ...本书由Oracle前产品经理Jason Price亲笔撰写,基于新推出的SQL 2003规范]]],详细介绍了Oracle Database 10g的新特性和功能。全书内容系统、权威,能帮助读者快速掌握SQL的核心知识。
清华大学出版社出版的《Oracle database 11g SQL开发指南》,本书是由著名的Oracle大师Joson Price著。 学习通过编写SQL语句并构建PL/SQL程序来访问Oracle数据库。完全涵盖了最新版本Oracle数据库的功能和技术,指导...
Oracle Database 11g SQL开发指南 PDF 清晰版 中文 带目录 附源码 由于PDF为高清版,顾文件较大,分三部分上传,此为part_02
清华大学出版社出版的《Oracle database 11g SQL开发指南》,本书是由著名的Oracle大师Joson Price著。 学习通过编写SQL语句并构建PL/SQL程序来访问Oracle数据库。完全涵盖了最新版本Oracle数据库的功能和技术,指导...
这是 Oracle DataBase 10g SQL 开发指南 书上的源代码。 初学者可以下载,照着书上的步骤操作,很有收益哦。
Oracle Database 11g SQL 开发指南.part1
由于书签是自己敲出来的,所以收取一积分的辛苦费
Oracle Database 11g SQL开发指南
《Oracle Database 11g SQL开发指南》高清扫描分3部分上传。
《Oracle Database 11g SQL开发指南》高清扫描分3部分上传。
《Oracle Database 11g SQL开发指南》高清扫描,分5部分上传。
清华大学出版社出版的《Oracle database 11g SQL开发指南》,本书是由著名的Oracle大师Joson Price著。 学习通过编写SQL语句并构建PL/SQL程序来访问Oracle数据库。完全涵盖了最新版本Oracle数据库的功能和技术,指导...