一、实验目的
加深对数据安全性的理解,并掌握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/)