SQL用户和权限.ppt

上传人:小飞机 文档编号:5449418 上传时间:2023-07-08 格式:PPT 页数:45 大小:1.37MB
返回 下载 相关 举报
SQL用户和权限.ppt_第1页
第1页 / 共45页
SQL用户和权限.ppt_第2页
第2页 / 共45页
SQL用户和权限.ppt_第3页
第3页 / 共45页
SQL用户和权限.ppt_第4页
第4页 / 共45页
SQL用户和权限.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《SQL用户和权限.ppt》由会员分享,可在线阅读,更多相关《SQL用户和权限.ppt(45页珍藏版)》请在三一办公上搜索。

1、目录,控制用户访问创建和撤消对象权限,控制用户访问,学习内容,在本课中,您将学习:比较对象权限与系统权限间的区别构建用户对数据库的访问权限所需的两个命令构建和执行GRANTON TO 语句,将其方案中对象的权限分配给其他用户和(或)“PUBLIC”查询数据字典以确认是否已授予权限,学习目的,如果您与他人共用同一台计算机,无论是在学校还是家中,都可能有过您正在使用或已保存的内容被他人查看、更改或删除的经历。要是能控制他人对您个人文件的权限就好了!对于数据库来说,正如您在学校或家中使用电脑的情况一样,数据安全非常重要。在本课中,您将学习如何授予或撤消对数据库对象的访问权限,从而控制哪些人可以更改、

2、删除、更新、插入、索引或引用数据库对象。,控制用户访问,在多用户环境下,需要维护数据库访问和使用的安全性。为了Oracle Server 数据库安全性,可以执行以下操作:控制数据库访问权限授予对数据库中特定对象的访问权限使用Oracle 数据字典确认授予的权限和收到的权限为数据库对象创建同义词,数据库安全性,数据库安全性可以分成以下两个类别:系统安全性包括在系统级别上访问和使用数据库,例如创建用户、用户名和口令,为用户分配磁盘空间,授予用户可以执行诸如创建表、视图和序列的系统权限。有一百多种不同的系统权限。数据安全性(也称为对象安全性)与对象权限关联,对象权限包括访问和使用数据库对象以及用户可

3、对这些对象执行的操作。这些权限包括可以执行DML 语句。,权限和方案,权限是指执行特定SQL 语句的权利。DBA 是高级用户,该类用户可以授予其他用户访问数据库及其对象的权限。用户需要具有系统权限才能访问数据库;需要具有对象权限才能处理数据库中对象的内容。用户还具有可为其他用户或角色(称为相关权限组)授予其它权限的权限。,权限和方案,方案是对象(例如表、视图和序列)的集合。方案归数据库用户所有且与该用户同名。在本课中,您的方案名是您所在城市、国家/地区、学校名、课程名和学生编号的组合。例如:uswa_skhs_sql01_s22.,系统安全性,这一级别的安全性包括在系统级别上访问和使用数据库。

4、有一百多种不同的系统权限。通常只有DBA 才拥有能创建或删除用户、删除表或备份表的系统权限。右侧的表中列出了一些系统权限。一般情况下,DBA 不会将这些系统权限授予其他用户。您希望其他用户能删除您的表吗?,系统权限,DBA 通过执行CREATE USER 语句创建了用户。CREATE USER 用户 IDENTIFIED BY 口令;CREATE USER scott IDENTIFIED BY ur35scott;此时,用户没有任何权限。然后,DBA 可以为该用户授予所需的权限。使用ALTER USER 语句,用户可以更改他们的口令。ALTER USER scott IDENTIFIED B

5、Y imscott35;,系统权限,-作为 sys 执行create user s02 identified by s02;grant create session to s02;-作为 s02 执行connect s02/s02 xe;-口令已更改alter user s02 identified by s0202;-作为 sys 执行,口令已更改 alter user s02 identified by s02;,用户系统权限,DBA 使用GRANT 语句可将系统权限分配给用户。系统权限决定了用户在数据库级别上可以执行的操作。一旦将权限授予了用户,该用户便可以立即使用这些权限。GRANT

6、privilege,privilege.TO user,user|role,PUBLIC.;GRANT create session,create table,create sequence,create viewTO scott;,用户系统权限,用户必须拥有CREATE SESSION 权限和用户标识才能访问数据库。在Oracle Application Express 中不能发出CREATE SESSION 命令,此操作自动在后台执行。但是在 sqlplus 中可以执行 CREATE SESSION 命令,对象安全性,这一级别的安全性包括访问和使用数据库对象以及用户可对这些对象执行的操作。

7、,对象安全性,每个对象都有特定的一组可授予的权限。下表针对各种对象列出了相应的权限。关于对象权限,请务必注意以下四点:1.适用于序列的权限只有SELECT 和ALTER。请记住,序列使用ALTER 可以更改INCREMENT、MAXVALUE、CACHE/NOCACHE 或CYCLE/NOCYCLE 选项。使用ALTER 不能更改START WITH。,对象安全性,2.可以针对表中的单个列授予UPDATE、REFERENCES 和INSERT 权限。例如:GRANT UPDATE(salary)ON employees TO allison_plumb;3.可以通过创建包含列子集的视图,只对视

8、图授予SELECT 权限。不能对单个列授予SELECT 权限。4.对同义词授予的权限会转换为对同义词所引用基表的权限。换而言之,同义词是简单、更易于使用的新名称。使用该名称授予权限就如同对表本身授予权限一样。,PUBLIC 关键字,表的所有者可以使用PUBLIC 关键字将访问权限授予所有用户。以下示例允许系统中的所有用户查询艾丽丝的“部门”表中的数据。GRANT selectON alice.departmentsTO PUBLIC;,PUBLIC 关键字,如果语句未使用对象的全名,则Oracle 服务器会隐式地将当前用户(或方案)的名称作为对象名的前缀。例如,如果用户scott查询depar

9、tments表,系统会从scott.Departments 表中进行检索。如果语句未使用对象的全名,并且当前用户不拥有该名称的对象,则系统会使用PUBLIC 作为对象名称的前缀。例如,如果用户scott查询 user_objects 表,而这个表并不属于scott,系统会使用PUBLIC.user_objects 公用同义词从数据字典视图中进行选择。,确认授予的权限,如果您尝试执行未经授权的操作,例如从某个表中删除一行,而对于这个表您不具有DELETE 权限,则Oracle 服务器不会执行该操作。如果收到Oracle 服务器错误消息“table or view does not exist(此

10、表或视图不存在)”,则表明您可能执行了以下操作之一:指定了不存在的表或视图尝试对您不具有适当权限的表或视图执行了某项操作,确认授予的权限,您可以访问数据字典来查看您所拥有的权限。右侧的表对各种数据字典视图进行了说明。使用Oracle Application Express Developer,输入USER_ROLE_PRIVS,选择放大镜,然后选择“Query By Example(按示例查询)”中的任意项。此时会返回他们的权限。,术语,本课中使用的关键术语包括:Privilege(权限)System privileges(系统权限)Object privileges(对象权限)System

11、security(系统安全性)Object security(对象安全性)Schema(方案)Role(角色)GRANT privilege(GRANT 权限)PUBLIC keyword(PUBLIC 关键字)CREATE SESSION privilege(CREATE SESSION 权限),小结,在本课中,您应该已经学会:比较对象权限与系统权限间的区别构建用户对数据库的访问权限所需的两个命令构建和执行GRANTON TO 语句,将其方案中对象的权限分配给其他用户和(或)“PUBLIC”查询数据字典以确认是否已授予权限,创建和撤消对象权限,学习内容,在本课中,您将学习:描述“角色(ROL

12、E)”的定义及其具有的优点构建一个语句,以便创建一个角色并为该角色授予权限构建GRANT.ON.TO.WITH GRANT OPTION 语句将对方案中对象的权限分配给其他用户和(或)PUBLIC(公众)构建并执行语句,从用户和(或)PUBLIC“撤消(REVOKE)”对象权限说明数据库链接的用途,学习目的,如果您与他人共用同一台计算机,无论是在学校还是家中,都可能有过您正在使用或已保存的内容被他人查看、更改或删除的经历。要是能控制他人对您个人文件的权限就好了!对于数据库来说,正如您在学校或家中使用电脑的情况一样,数据安全非常重要。在本课中,您将学习如何授予或撤消对数据库对象的访问权限,从而控

13、制哪些人可以更改、删除、更新、插入、索引或引用数据库对象。,角色,角色是可以授予用户的相关权限组。角色使撤消和维护权限变得更容易。一个用户可以访问几个角色,而同一角色也可以分配给几个用户。角色通常是为数据库应用程序创建的。要创建和分配角色,首先DBA 必须创建角色。然后,DBA 可以将权限分配给角色或将角色分配给用户。,角色,使用以下语法创建角色:CREATE ROLE role_name;创建角色之后,DBA 可以使用GRANT 语句将角色分配给用户,也可以将权限分配给角色。所给示例创建了一个经理角色,并允许经理创建表和视图。然后将该角色授予某个用户。现在,该用户可以创建表和视图。如果为用户

14、授予多个角色,则这些用户会收到与所有这些角色相关联的所有权限。注:CREATE ROLE 是尚未分配给Academy 教室的系统权限。,角色特性,角色是相关权限组。可以将角色授予用户。角色可以简化授予和撤消权限的过程。角色由DBA 创建。,授予对象权限,使用以下语法授予对象权限:GRANT object_priv(column_list)ON object_nameTO user|role|PUBLICWITH GRANT OPTION;,对象权限准则,要对某个对象授予权限,该对象必须在您自己的方案中,或者您具有WITH GRANT OPTION 对象权限。对象所有者可以将该对象的任何对象权限

15、授予数据库的任何其他用户或角色。对象所有者会自动获得该对象的所有对象权限。,GRANT 示例,Scott King(用户名scott_king)已经创建了d_songs 表。在右侧的示例1 中,授予所有用户对Scott 的d_songs表的SELECT 权限。示例2 将对 Scott 的d_songs 表中特定列的UPDATE 权限授予jeninfer_cho和manager角色。如果jeninfer现在希望从Scott的表中选择数据,她可以使用示例3 中的语法。或者,jeninfer 可以为Scott的表创建同义词,然后从该同义词中进行检索。请参阅示例4 和示例5 中的语法。对于不同类型的方

16、案对象,可以使用的对象权限也不同。对于用户方案中所包含的方案对象,该用户自动拥有这些对象的全部权限。用户可以将自己所拥有的任何方案对象上的任何对象权限授予其他用户或角色。,WITH GRANT OPTION,使用WITH GRANT OPTION 子句授予的权限可由被授权者传递给其他用户和角色。撤消授权者的权限时,使用WITH GRANT OPTION 子句授予的对象权限也会被撤消。以下示例授予用户scott对您的d_songs表的访问权限,以及查询该表和向表中添加行的权限。本示例还允许scott将这些权限授予其他人。GRANT select,insert ON d_songs TO scot

17、t_kingWITH GRANT OPTION;,WITH GRANT OPTION,-传递授权是否会收回试验-ssession sysGRANT select on scott.emp to zxg WITH GRANT OPTION;CREATE USER zzzIDENTIFIED BY zzz;GRANT connect TO zzz;-ssession zxgselect*from scott.emp;GRANT select on scott.emp to zzz WITH GRANT OPTION;-ssession zzzselect*from scott.emp;-ssess

18、ion sysREVOKE select on scott.emp FROM zxg;-ssession zzz-失败,说明传递授权也会级联回收select*from scott.emp;,PUBLIC 关键字,表的所有者可以使用PUBLIC 关键字将访问权限授予所有用户。以下示例允许系统中的所有用户查询 jason 的d_songs表中的数据:GRANT selectON jason_tsang.d_songsTO PUBLIC;如果您尝试执行未经授权的操作,例如从某个表中删除一行,而对于这个表您不具有DELETE 权限,则Oracle Server 不会执行该操作。如果收到Oracle S

19、erver 错误消息“table or view does not exist(此表或视图不存在)”,则表明您可能执行了以下操作之一:指定的表或视图不存在尝试对您不具有适当权限的表或视图执行某项操作,确认权限,您可以访问数据字典来查看您所拥有的权限。右侧的表对各种数据字典视图进行了说明。,撤消对象权限,使用REVOKE 语句可以删除授予其他用户的权限。REVOKE privilege,privilege.|ALLON objectFROM user,user.|role|PUBLICCASCADE CONSTRAINTS;使用REVOKE 语句,会撤消指定用户的指定权限,如果被撤消权限的用户在

20、此之前还通过WITH GRANT OPTION 子句将这些权限授予了任何其他用户,则也会撤消这些用户的相应权限。必须使用 CASCADE CONSTRAINTS,才能删除通过REFERENCES 权限对该对象实行的任何引用完整性约束条件。,CASCADE CONSTRAINTS 示例,-作为 sys 执行create table emp(eno number primary key);grant select,references(eno)on sys.emp to s02;-作为 s02 执行create table dept(mnrno number constraint dept_mnr

21、no_fk references sys.emp(eno);select constraint_name,column_name from user_cons_columns where table_name=DEPT;-作为 sys 执行revoke references on sys.emp from s01 cascade constraint;-作为 s02 执行,结果显示 未选定行select constraint_name,column_name from user_cons_columns where table_name=DEPT;,撤销对象权限,以下示例撤消了用户scott对

22、d_songs表的SELECT 和INSERT 权限。REVOKE select,insert ON d_songs FROM scott_king;如果使用WITH GRANT OPTION 子句为用户授予权限,则被授权用户也可以使用WITH GRANT OPTION 子句为其他用户授予权限。这意味着可能会出现一条长长的被授权者链,但是不允许循环授予权限。如果所有者撤消了某个用户的某项权限,而该用户将多项权限授予了其他用户,则该撤消语句会级联撤消所有已授予的权限。,撤销对象权限,例如,如果用户A 使用WITH GRANT OPTION 子句将对表的SELECT 权限授予了用户B,则用户B 也

23、可以使用WITH GRANT OPTION 子句将SELECT 权限授予用户C。现在,用户C 可以将SELECT 权限授予用户D。,撤销对象权限,但是,如果用户A 撤消了用户B 的权限,则也会撤消已授予用户C 和D 的权限。,数据库链接,数据库链接是一个指针,用于定义从一个Oracle 数据库到另一个Oracle 数据库的单向通信路径。链接指针实际上被定义为数据字典表中的一个条目。要访问该链接,必须连接到包含数据字典条目的本地数据库。,数据库链接,数据库链接的连接是单向的,这意味着连接到本地数据库A 的客户机可以使用数据库A 中存储的链接访问远程数据库B 中的信息,但是连接到数据库B 的用户不

24、能使用相同的链接访问数据库A 中的数据。如果数据库B 中的本地用户希望访问数据库A 中的数据,他们必须定义存储在数据库B 的数据字典中的链接。创建数据库链接-在Oracle Application Express 中,到数据库的连接不是固定连接,因此此功能不可用。在 SQLPlus 中可创建数据库链接,数据库链接,A 数据库链接的连接使本地用户可以访问远程数据库中的数据。要建立该连接,分布式系统中的每个数据库都必须具有唯一的全局数据库名。全局数据库名唯一标识分布式系统中的数据库服务器。数据库链接的显著优点在于它们允许用户访问远程数据库中另一个用户的对象,因此它们由对象所有者的权限集进行约束。换

25、而言之,本地用户可以访问远程数据库,而不必是该远程数据库的用户。本示例说明用户scott_king 可以访问远程数据库(全局名为)中的EMP 表。,数据库链接,一般情况下,DBA 负责创建数据库链接。数据字典视图USER_DB_LINKS 包含有关用户对其具有访问权限的链接的信息。一旦创建了数据库链接,便可以针对远程站点中的数据编写SQL 语句。如果创建了同义词,可以使用该同义词编写SQL 语句。例如:CREATE PUBLIC SYNONYM HQ_EMPFOR;SELECT*FROM HQ_EMP;不能授予对远程对象的权限。,小结,在本课中,您应该已经学会:描述“角色(ROLE)”的定义及其具有的优点构建一个语句,以便创建一个角色并为该角色授予权限构建GRANT.ON.TO.WITH GRANT OPTION 语句将对方案中对象的权限分配给其他用户和(或)PUBLIC(公众)构建并执行语句,从用户和(或)PUBLIC“撤消(REVOKE)”对象权限说明数据库链接的用途,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号