实验七 用户权限、视图实验

  • 实验目的
    1、掌握创建用户、用户权限的授权和回收权限等相关命令的使用

2、掌握视图的基本操作。
二、实验内容

在shop数据库中创建两个视图。

  1. 创建用户shop_view_test;
  2. 创建视图:sh_view_attr:用于根据商品分类的id查所有属性信息;要求:指定视图用户为DEFINER。
  3. 查询视图中所有的记录,以及原表中有而视图中没有的字段信息。增加截图分析结果。
  4. 显示的记录条数限制limit n,测试limit自句在原表中使用select语句和视图的select语句中使用的差异。
  5. 创建视图:sh_view_goods_attr:用于根据商品id查找所有属性信息。要求:指定给试视图分别指定控制视图安全SQL SECURITY的方式分别为:DEFINER,和INVOKE。
  6. 为视图:sh_view_goods_attr创建用户,并指定用户的权限为select、update和delete权限。在该权限下,执行以上三个命令,给视图表做相应的操作,并能看到效果,截图分析。
  7. 回收以上用户update和delete的权限。再执行update和delete操作,看是否能执行,截图分析。

三、实验步骤和过程记录

  1. CREATE USER `sh_view_test`@`localhost` IDENTIFIED WITH caching_sha2_password;
  2. GRANT DeleteSelectUpdate ON TABLE `shop`.`sh_view_goods_attr` TO `sh_view_test`@`localhost`;

  1. CREATE VIEW sh_view attr AS
  2. SELECT
  3.  `a`.`sort` AS `sort1`,
  4.  `a`.`name` AS `attr1`,
  5.  `b`.`sort` AS `sort2`,
  6.  `b`.`name` AS `attr2`,
  7.  `b`.`category_id` AS `category_id` 
  8. FROM
  9.  (
  10.   `sh_goods_attr` `a`
  11.   JOIN `sh_goods_attr` `b` ON ((
  12.     `a`.`id` = `b`.`parent_id` 
  13.    ))) 
  14. WHERE
  15.  ( `b`.`parent_id` <> 0 ) 
  16. ORDER BY
  17.  `a`.`sort` ASC,
  18.  `b`.`sort` ASC;

  1. SELECT * FROM sh_view_attr WHERE category_id = 6;

      

  1.  limit字句在原表中使用select语句
  1.    SELECT idname, price, price*0.8 p FROM sh_goods LIMIT 3;

  

  1. CREATE VIEW sh_view_goods_attr AS
  2. SELECT
  3.  `b`.`name` AS `attr1`,
  4.  `a`.`name` AS `attr2`,
  5.  `c`.`attr_value` AS `attr_value`,
  6.  `c`.`goods_id` AS `goods_id` 
  7. FROM
  8.  ((
  9.    `sh_goods_attr` `a`
  10.    JOIN `sh_goods_attr` `b` ON ((
  11.      `a`.`parent_id` = `b`.`id` 
  12.     )))
  13.   JOIN `sh_goods_attr_value` `c` ON ((
  14.     `a`.`id` = `c`.`attr_id` 
  15.    ))) 
  16. WHERE
  17.  ( `a`.`parent_id` <> 0 ) 
  18. ORDER BY
  19.  `b`.`sort` ASC,
  20.  `a`.`sort` ASC ;

  1. SELECT * FROM sh_view_goods_attr ;

      

为视图:sh_view_goods_attr创建用户,并指定用户的权限为select、update和delete权限。 

  1. CREATE USER `sh_view_test` @`localhost` IDENTIFIED WITH caching_sha2_password;
  2. GRANT DeleteSelectUpdate ON TABLE `shop`.`sh_view_goods_attr` TO `sh_view_test`@`localhost`;

在用户端登录并进行select操作:

在navicat中:

在命令符窗口中:

  1. SELECT * FROM sh_view_goods_attr;

回收以上用户update和delete的权限。再执行update和delete操作:

问题思考与总结
本次实验遇到了很多问题。

①用户的创建,根据教材所展示的内容可以用‘用户名@127.0.0.%’的格式,但是在操作的时候,发现它可以创建,但是没有办法使用,最终我采用了‘用户名@localhost’的方式,可以在cmd中登录并使用。

②给用户分配权限后update和delete权限一直不能成功使用,再次分配却又报出“权限已分配”的错误,尝试多次后发现需要重新登录mysql用户才能刷新权限正常使用。

③limit n后的向量指的是第几条记录,与id值无关,实验时没想到这个点,最后每次出来的结果和预期的不一样,以为自己做错了耽误了很多时间。

④‘< >’和‘! =’一样,表示不等于的意思。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

康桑想毕业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值