按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
目的开发过程中 你可能会只购买少数的许可证用以测试 开发以及其它的目的 但是
你的产品的实际许可证要求可能会是成百上千个 此外 当你决定采用某一种数据库管理
系统时 你可能会在这个产品中渡过几年的时间 所以 当你在检查下边的数据库管理系
统时头脑中要有下边的概念
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。