实验四通过SQL进行数据完整性控制..doc
文本预览下载声明
实验报告
实验目的:
熟悉通过SQL进行数据完整性控制的方法。
实验内容和要求:
建立表,考察表的生成者拥有该表的哪些权限。
使用SQL 的grant 和revoke命令对其他用户进行授权和权力回收,考察相应的作用。
建立视图,并把该视图的查询权限授予其他用户,考察通过视图进行权限控制的作用。
完成实验报告。
实验平台:
数据库管理系统:SQL Server 或MySQL
操作方法与实验步骤及结果
1、建立表,考察表的生成者拥有该表的哪些权限。
说明:以下实验在Workbench中完成。
首先以root用户登录,新建一个用户sherry,密码是12345:
mysqlgrant usage on *.* to sherry@localhost
mysqlidentified by 12345 with grant option;
查看sherry@localhost的权限:
mysqlshow grants for sherry@localhost;
返回:
GRANT USAGE ON *.* TO \sherry\@\localhost\ IDENTIFIED BY PASSWORD \*00A51F3F48415C7D4E8908980D443C29C69B60C9\ WITH GRANT OPTION
这里WITH GRANT OPTION部分指定了用户可以使用GRANT/REVOKE命令将他拥有的权限赋予其他用户。
刷新权限:
mysqlflush privileges;
0 row(s) affected
查看用户表,可以看到多了一个名为sherry的用户:
mysqlselect host,user,password from mysql.user;
4 row(s) returned
2)用户sherry登录数据库:
3)在test数据库中用用户sherry建立表格,考察其权限:
use test;
0 row(s) affected 0.000 sec
create table stest( s_id CHAR(4), s_name CHAR(10));
0 row(s) affected 0.827 sec
4)向表格中插入数据成功,该用户对其创建的表格具有插入权限
5)查看表中数据成功,该用户对其创建的表格具有查看权限
6)更新表中数据,但这时出现了一个小问题:
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences - SQL Queries and reconnect.
使用安全更新模式的时候update语句必须使用一个关键字列属性来限定更新的范围。如果不使用关键字列来限定范围或更新所有记录的时候就不能用安全更新模式。
解决办法是执行以下语句设置为非安全更新模式.
mysql有个叫SQL_SAFE_UPDATES的变量,为了数据库更新操作的安全性,此值默认为1,所以才会出现更新失败的情况。
解决办法是执行以下语句设置为非安全更新模式.
SET SQL_SAFE_UPDATES=0;
再次更新表中数据,修改成功,说明sherry对其创建的表格具有修改的权限。
7)删除表中数据:
8)删除表格stest:
综上,表格的生成者对表格具有插入、查看、修改、删除的权限。
2、使用SQL 的grant 和revoke命令对其他用户进行授权和权力回收,考察相应的作用。
1)再次以root用户登录
2)对sherry赋予branch表格的查看权限:
3)以sherry账号登录,查看branch表格内容,成功:
4)如果是查看account表格,因为sherry不具有权限,因此被拒绝:
Error Code: 1142. SELECT command denied to user sherry@localhost for table account
5)试图向branch表格中插入数据,又被拒绝:
insert into branch values(First Bank,Manhattan
Error Code: 1142. INSERT command denied to user sherry@localhost for table branch
6)修改数据被拒绝:
显示全部