友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
富士康小说网 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

SQL 21日自学通(V3.0)(PDF格式)-第34部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!





理和维护人员 



   在很多时候   当我们在真正实施这个项目时我们需要考虑或计划到一点         那就是当众 



多的用户通过广域网使用你的应用程序时会有什么情况发生  根据今天个人计算机的强大 



软件和硬件以及微软的开放数据库联接  ODBC      任何连接于网络的用户都会有办法得到 



你的数据库    我们不想在当我们公司的计算机准备联入 internet 时或类似的大型网络时有 



麻烦出现  那么我们应该如何面对这一情况 



   非常幸运  软件供应商已经为你处理安全问题提供了许多的工具  每一个新的网络操 



作系统都会面对着比它的上一代更为严格的安全性要求         此外  许多的数据库供应商也都 



                                                 238 


…………………………………………………………Page 239……………………………………………………………

SQL 21  日自学通(V1。0)                             翻译人 笨猪 



在它们的数据库系统提供了不同程度的        与你的网络操作系统安全相独立的安全性  所以 



想在不同的产品中实现安全性的方法是非常广泛的 



流行的数据库产品与安全 



   就像你所知道的那样     许多数据库管理系统为你的生意而存在着商业竞争         在一个项 



目的开发过程中  你可能会只购买少数的许可证用以测试  开发以及其它的目的  但是 



你的产品的实际许可证要求可能会是成百上千个         此外   当你决定采用某一种数据库管理 



系统时  你可能会在这个产品中渡过几年的时间        所以   当你在检查下边的数据库管理系 



统时头脑中要有下边的概念 



   MicroSoft  FoxPro 数据库管理系统是一个非常强大的基于单用户环境的数据库管理系 



统  它只使用了有限的 SQL 标准的子集  在该数据库系统中没有提供安全性措施          同时 



它使用了 Xbase 的文件格式  每一个文件中都只有一个表     索引文件存储于单独的表中 



   MicroSoft  Access  数据库管理系统提供了更多的 SQL  实现  尽管它内部已经包括了基 



本的安全系统    但它仍然是一个基于 PC  平台的数据库管理系统      该数据库系统允许你创 



建查询并把它们存储在数据库之中       此外  全部的数据库及其对象均存在于同一个文件之 



中 



   Oracle  7 数据库管理系统支持全部的标准的 SQL 此外  它还对标准的 SQL 进行了称 



之为 PL*SQL 的扩充  它拥有全部的安全特性    包括在数据库中创建角色以及为数据库对 



象分配权限的能力 



   Sybase  SQL 拥有与 Oracle  7 类似的能力与特性 它也提供了极大范围内的安全特性 



它对 SQL 的扩充被称为 Transact…SQL 



   对这些产品进行描述的目的是想说明并不是所有的软件都适用于每一个应用程序              如 



果你的程序用于商业目的  那么你的选择将会受到限制         成本与性能的因素是非常重要的 



然而  如果没有足够的安全手段      那么任何在创建数据库之初时的费用节约都将被安全问 



题吃掉 



如何让一个数据库变得安全 



   到现在为止你还没有因为数据库的安全问题而不高兴          但是否你曾经因为你不想让其 



它的用户登录进入你的数据库系统造成破坏而不得不非常小心的登录  如果有一天早上你 



                                                   239 


…………………………………………………………Page 240……………………………………………………………

SQL 21  日自学通(V1。0)                                        翻译人   笨猪 



登录进行系统后发现你辛苦努力的成果都被人删除了你的反应会怎样                          还记得 DROP 



DATABASE 语句是没有记录的吗           我们来学习一个流行的数据库管理系统               Personal 



Oracle 7 是如何实现安全的      当你已经确认你的系统中没有选择 Oracle  7 时你也可能会将 



这些信息中的大多数应用到其它的数据库管理系统中 



技巧   要带着下边的问题去规划你数据库系统的安全性 



l  谁应该得到数据库管理员权限 



l  有多少个用户需要访问数据库系统 



l  每个用户应该得到什么样的权限与角色 



l   当一个用户不再访问数据库时应该如何去删除它 



Personal Oracle7 与安全 



Personal Oracle7  通过下边的三个结构来实现安全性 



      l   用户 



      l   角色 



      l   权限 



创建用户 



   用户就是允许登录进入系统的账号名  创建用户使用的 SQL 语法格式如下 



语法 



   CREATE USER user 



   IDENTIFIED {BY password | EXTERNALLY} 



   'DEFAULT TABLESPACE tablespace' 



   'TEMPORARY TABLESPACE tablespace' 



   'QUOTA {integer 'K|M' | UNLIMITED} ON tablespace' 



   'PROFILE profile' 



   如果你选择了需要密码选项           当用户每次登录进行系统时系统都会要求他输入密码 



作为一个例子      下面请为你自己创建一个用户名 



INPUT/OUTPUT 



   SQL》 CREATE USER Bryan IDENTIFIED BY CUTIGER; 



                                                                 240 


…………………………………………………………Page 241……………………………………………………………

SQL 21  日自学通(V1。0)                                                   翻译人   笨猪 



    User created 



    每次我登录进行系统的名字是 Bryan              我会被要求输入密码 GUTIGER 



    如果选择了 EXTERNALLY 选项           ORACLE  将会依赖于你登录进入计算机系统的用户 



名和密码      也就是说当你登录进行计算机时你就已经登录进行了 ORACLE 



注   一些解释器允许你使用外部的               比如操作系统的密码作为 SQL             的密码  IDENTIFIED 



   externally 但是    我们推荐你使用 IDENTIFIED  BY  子句强制用户在登录进行系统时 



   输入密码  IDENTIFIED BY PASSWORD 



    就像你在 CREATE  USER 的其它部分所看到的一样  ORACLE  允许你指定默认的表空 



间及配额  你可以在 ORACLE 的附带文档中学习到更多的与之相关的内容 



    与你在本书中学到的其它的 CREATE 语句一样                   它也有 ALTER  USER  命令       其语法 



格式如下 



语法 



    ALTER USER user 



    'IDENTIFIED {BY password | EXTERNALLY}' 



    'DEFAULT TABLESPACE tablespace' 



    'TEMPORARY TABLESPACE tablespace' 



    'QUOTA {integer 'K|M' | UNLIMITED} ON tablespace' 



    'PROFILE profile' 



    'DEFAULT ROLE { role '; role' 。。。 



      | ALL 'EXCEPT role '; role' 。。。' | NONE}' 



    你可以使用该命令来改变所有的用户选项                    包括密码和配置文件  例如              如果想改变 



Bryan 的密码  你可以用下边的语句 



INPUT/OUTPUT 



    SQL》 ALTER USER Bryan 



        2    IDENTIFIED  BY  ROSEBUD 



    User altered 



    如果想改变默认的表空间  可以用下边的语句 



INPUT/OUTPUT 



    SQL》 ALTER USER RON 



                                                                            241 


…………………………………………………………Page 242……………………………………………………………

SQL 21  日自学通(V1。0)                                       翻译人   笨猪 



       2    DEFAULT  TABLESPACE  USERS 



   User altered。 



   如果想删除一个用户        只需简单地使用 DROP  USER  命令即可       它将会把用户从数据 



库的清除    该命令的语法格式如下 



SYNTAX 



   DROP USER user_name 'CASCADE' 



   如果你使用了 CASCADE  选项      那么所有与用户账号相关的对象也将会被删除                否则 



的话对象将仍归该用户所有  但是用户将不再有效                这有点让人迷糊  但是当你只想删除 



用户时它很有用 



创建角色 



   角色是允许用户在数据库中执行特定功能的一个或一组权限                    将角色应用于用户的语 



法如下 



SYNTAX 



   GRANT role TO user 'WITH ADMIN OPTION' 



   如果你使用了 WITH  ADMIN  OPTION    选项   那么该用户可以为其它用户赋予权限 



功能是不是很强大 



   如果想删除角色  可以使用 REVOKE 命令 



SYNTAX 



   REVOKE role FROM user 



   当你使用你早些时候创建的账号登录进入系统时  你会为你的许可权问题而费尽精力 



你可以登录进入  但这也是你所能做的全部内容               ORACLE 可以让你用下边的三个角色之 



一进行注册 



       l  Connect 



       l  Resource 



       l  DBA  也就是数据库管理员 



   这三个角色有着不同程度的权限 



注  如果你有适当的权限  你可以创建你自己的角色                为你的角色赋予权限       然后将角色 



   应用于你的用户以取得更高的安全性 



                                                               242 


…………………………………………………………Page 243……………………………………………………………

SQL 21  日自学通(V1。0)                                               翻译人    笨猪 



Connect 角色 



    你可以将 Connect  角色理解为登录级角色  被赋予该角色的用户可以登录进入系统并 



做允许他/她们做的工作 



INPUT/OUTPUT 



    SQL》 GRANT CONNECT TO Bryan 



    Grant succeeded。 



    Connect  角色允许用户从表中插入          更新    删除属于其它用户的记录            在取得了适当 



的许可权限以后  用户也可以创建表  视图                 序列   簇和同义词 



Resource 角色 



    该角色允许用户对 ORACLE 数据库进行更多的访问                  除了可以赋予 Connect 角色的权 



限以外  它还有创建过程           触发机制和索引的权限 



INPUT/OUTPUT 



    SQL》 GRANT RESOURCE TO Bryan 



    Grant succeeded。 



    DBA 角色 



    DBA  角色包括了所有的权限  赋予了该角色的用户可以在数据库中做他们想做的任何 



事   为了保证系统的完整性你应该将具有该角色的用户数量保持在仅有的少数几个上 



INPUT/OUTPUT 



    SQL》 GRANT DBA TO Bryan; 



    Grant succeeded。 



    在经过了这三步之后          用户 Bryan 分别应用了 connect     resource 和 DBA 角色  这似乎 



是多余的      因为 DBA 角色就包括了其它的两个角色  所有现在我们可以把它删除掉 



INPUT/OUTPUT 



    SQL》 REVOKE CONNECT FROM Bryan 



    Revoke succeeded。 



    SQL》 REVOKE RESOURCE FROM Bryan 



    Revoke succeeded。 



                                                                        243 


…………………………………………………………Page 244……………………………………………………………

SQL 21  日自学通(V1。0)                                     翻译人  笨猪 



   拥有 DBA 角色的 Bryan 现在可以做他想做的任何工作 



用户权限 



   在你决定好对你的用户应用何种角色以后             你需要决定让你的用户具有使用哪种数据 



库对象的权利  ORACLE    中称之为许可权限  该权限依据你为用户所定的角色的不同而不 



同  如果你创建了一个对象        你可以将该对象的许可权赋予其它的用户以使他们也具有访 



问权  ORACLE 定义了两种可以赋予用户的权利 — — 系统许可权与对象许可权               见表 12。1 



和表 12。2 



   系统许可权应用于整个系统  赋予系统许可权的语法如下 



SYNTAX 



   GRANT system_privilege TO {user_name | role | PUBLIC} 



   'WITH ADMIN OPTION' 



   如果使用了 WITH  ADMIN  OPTION 选项就允许拥有该权限的人将该权限应用给其它 



的用户 



用户使用视图的权利 



   下边的命令将允许系统中的所有用户都具有在自己的模块中创建视图和访问视图的能 



力 



INPUT 



   SQL》 GRANT CREATE VIEW  TO PUBLIC 



OUTPUT 



   Grant succeeded。 



分析 



   PUBLIC  关键字的意思就是每个人都有创建视图的权利            很明显  系统权限允许受权 



人访问几乎全部的系统的设置         所有系统权限只应只能给予特定的人或需要使用系统权限 



的人  表 12。1 显示出了你可以在 ORACLE 7 的帮助文件中找到的系统权限 



警告   当赋予权限给 PUBLIC  时必须小心  它可能会给所有用户以访问数据库的权限                尽 



     管有一些人你是不想让他拥有这一权限的 



                                                            244 


…………………………………………………………Page 245……………………………………………………………

    SQL 21  日自学通(V1。0)                                     翻译人  笨猪 



                     表 12。1 在 ORACLE 7  中的系统权限 



  System Privilege                 Operations Permitted 

ALTER ANY INDEX   允许受权人更改任何模块中的索引 

ALTER ANY PROCEDURE 允许受权人更改任何的存储过程        函数并打包到任何模块中 

ALTER ANY ROLE    允许受权人更改数据库中的任何角色 

ALTER ANY TABLE   允许受权人更改模块中的表和视图 

ALTER ANY TRIGGER 允许受权人能够  不能或编译任何模块中的触发机制 

ALTER DATABASE    允许受权人改变数据库 

                  允许受权人更改用户  该权限允许受权人改变其它用户的密码或鉴定方 

ALTER USER        法  指定配额或表空间  设置默认的或临时的表空间  指定一个profile 

                  或默认角色 

CREATE ANY INDEX  允许受权人在任何模块的任何表中创建索引 

CREATE ANY PROCEDURE 允许受权人创建存储过程     函数并打包到任何模块中 

                  允许受权人在任何模块内创建表          创建表的模块的所有者必须拥有配额 

CREATE ANY TABLE 

                  及表空间以存放表 

CREATE ANY TRIGGER 允许受权人在与任何模块相关联的表的模块中创建触发机制 

CREATE ANY VIEW   允许受权人在任何模块中创建视图 

CREATE PROCEDURE  允许受权人创建存储过程        函数并打包到他们自己的模块中 

CREATE PROFILE    允许受权人创建profiles。 

CREATE ROLE       允许受权人创建角色 

CREATE SYNONYM    允许受权人在他们自己的模块中创建同义字 

                  允许受权人在他们自己的模块中创建表  要创建一个表  受权人必须有 

CREATE TABLE 

                  表空间配额以存放表 

CREATE TRIGGER    允许受权人在他们自己的模块中创建数据库触发机制 

                  允许受权人创建用户  该权限也允许创建人指定表空间配额                设置默认 

CREATE USER 

                  和临时的表空间      并指定profile作为CREATE USER语句的一部分 

CREATE VIEW       允许受权人在他们自己的模块中创建视图 

DELETE ANY TABLE  允许受权人从任何模块的表和视图中删除行或截表 

DROP ANY INDEX    允许受权人从任何模块中删除索引 

DROP ANY PROCEDURE 允许受权人删除任何模块中的包  存储过程及函数 

DROP ANY ROLE     允许受权人删除角色 

DROP ANY SYNONYM  允许受权人删除任何模块中的同义字权限 

DROP ANY TABLE    允许受权人删除任何模块中的表 

DROP ANY TRIGGER  允许受权人删除任何模块中的数据库触发机制 

DROP ANY VIEW     允许受权人删除任何模块中的视图 

DROP USER         允许受权人删除用户 

                  允许受权人执行过程或函数  独立的或打包的             或引用任何模块中的全 

EXECUTE ANY PROCEDURE 

                  局变量 

GRANT ANY PRIVILEGE 使受权人具有全部系统特权 

GRANT ANY ROLE    使受权人具有全部数据库角色 

INSERT ANY TABLE  允许受权人在任何模块的表或视图中插入行 

LOCK ANY TABLE    允许受权人锁定任何模块中的表和视定 

SELECT ANY SEQUENCE 允许受权人引用其它模块中的序列 

SELECT ANY TABLE  允许受权人查询任何模块中的表  视图或进行映像 

UPDATE ANY ROWS   允许受权人更新表中的行 



       对象权限是指可以在数据库中使用的对象的权限               表 12。2  中给出了所有了 ORACLE 



    中的对象权限 



                                                                 245 


…………………………………………………………Page 246……………………………………………………………

  SQL 21  日自学通(V1。0)                                                           翻译人    笨猪 



ALL                      你可以使用下边的 GRANT 语句来对其它用户授权访问你的表 



ALTER                    SYNTAX 



DELETE 

                         GRANT {object_priv | ALL 'PRIVILEGES'} ' (column 

EXECUTE 

                         '; column'。。。) ' 

INDEX 



INSERT                   '; {object_priv | ALL 'PRIVILEGES'} ' (column 



REFERENCES               '; column' 。。。) ' ' 。。。 



SELECT 

                         ON 'schema。'object 

UPDATE 

                         TO {user | role | PUBLIC} '; {user | role | PUBLIC}' 。。。 



                         'WITH GRANT OPTION' 



      如果你想取消对某个对象对于某人的授权  你可以使用 REVOKE 语句                                   语法如下 



  SYNTAX 



      REVOKE {object_priv | ALL 'PRIVILEGES'} 



      '; {object_priv | ALL 'PRIVILEGES'} ' 



      ON 'schema。'object 



      FROM {user | role | PUBLIC} '; {user | role | PUBLIC}' 



      'CASCADE CONSTRAINTS' 



  从建表到角色授权 



      创建一个名字为 SALARIES  的表  结构如下 



  INPUT 


返回目录 上一页 下一页 回到顶部 9 9
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!