《数据库系统原理》实验10:数据库的安全性设计

一、实验目的

加深对数据安全性的理解,并掌握Navicat中有关用户,角色及操作权限的管理方法。

二、实验内容

1、在Navicat中,管理建立用户和分配用户权限。

在这里,我们可以发现root是MySQL最高级别权限的用户,它拥有查看、修改和删除MySQL软件中所有数据库的权限。当需要有多个数据库,并且分配给不同的用户使用,多个用户之间只有查看自己对应数据库的权限,不相互干扰, 需要建立多个数据库和用户,给用户设置管理指定数据库的权限。

操作方法如下:

①   右键点击“MySQL” 连接,选择“连接属性”,将“保存密码”取消。

②鼠标右键点击“MySQL” 连接,选择“创建数据库”,创建名为xunmei的数据库,字符集选择utf8 -- UTF-8 Unicode排序规则选择utf8_general_ci。

③打开数据库xunmei后,点击界面上方的“用户”—“新建用户”—输入用户名“xmuser”、主机“localhost”、密码“1234”—保存(服务器权限自行定义)。

④点选新建的用户xmuser—编辑用户—权限—添加权限--选择数据库xunmei,添加相应权限(可不全选),如下图所示:

⑥设置到此完成。为了验证我们的设置是否正确,我们可以用刚才建立的用户xmuser和密码1234来连接localhost主机地址(方法:关闭连接MySQl,该连接属于最高权限用户root。我们用新用户新建一个到localhost的连接来模拟不同用户使用数据库的过程)。连上后,可使用用户xmuser对数据库xunmei或其他数据库进行操作,看是否与自己设置的权限相吻合。(可只添加添加少量权限,然后尝试在xunmei里进行操作,看是否能成功)。

SELECT语句成功执行

删除数据表无法执行,与设置的权限相吻合

三、课后练习题

1、使用两个不同的用户通过Navicat和查询分析器查看world数据库中country、city两个表的所有数据。

2、删除用户xmuser,尝试新建另一个用户来管理数据库、表等:

添加新用户对数据库world的权限,比较在有无相关权限的情况之下进行操作的区别:

①     Create。尝试新建表

②     Update。尝试修改表数据或结构

③     ……..(自行设计,总共尝试5组,进行对比)

有权限时均正常执行

无权限时:

①   SELECT语句

②   CREATE语句:

③   UPDATE语句:

④   DELETE语句:

⑤   DROP语句:

 

四、思考题

1、解释10个数据库操作权限的含义和影响。

(1)CREATE和DROP权限,可以创建数据库、表、索引,或者删除已有的数据库、表、索引。

(2)INSERT、DELETE、UPDATE、SELECT权限,可以对数据库中的表进行增删改查操作。

(3)INDEX权限,可以创建或删除索引,适用于所有的表。

(4)ALTER权限,可以用于修改表的结构或重命名表。

(5)GRANT权限,允许为其他用户授权,可用于数据库和表。

(6)FILE权限,被赋予该权限的用户能读写MySQL服务器上的任何文件。

五、出现的问题及解决方案

问题:

ORDER BY关键字降序排序问题

SQL AND & OR 运算符与优先级问题

WHERE语句的特殊条件——例如is null、between and、like模糊查询等问题

Enum枚举类型的设定值问题

CHECK语句约束不起作用问题

解决方案:

参考《数据库系统概论课本》、菜鸟教程(https://www.runoob.com/sql)、CSDN博客和MySQL参考手册(https://dev.mysql.com/doc/)

发布了79 篇原创文章 · 获赞 100 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/lee1hong/article/details/105763424