当前位置: 首页 > news >正文

解析MySQL 8.0 OCP(1Z0-908)考试中一道大部分同学都会做错的题目

一个用户有下面的权限:

mysql>SHOW GRANTS FOR jsmith;+----------------------------------------------------------------------+
| Grants for jsmith@%                                                  |
+----------------------------------------------------------------------+
| GRANT USAGE ON * * TO 'jsmith'@'%'                                   |
| GRANT UPDATE (Name) ON 'world'.country' TO 'jsmith'@'%';           |
+----------------------------------------------------------------------+
2 rows in set(0.00sec)

jsmith可以执行哪两条SQL语句?
A)UPDATE world.country SET Name='all;
B)UPDATE world.Country SET Name=‘new’ WHERE Name='old;
C)UPDATE world.country SET Name=‘one’ LIMIT1;
D)UPDATE world.country SET Name=‘first’ ORDER BY Name LIMIT 1;
E)UPDATE world.country SET Name=CONCAT(‘New’,Name);
我们看到这个用户的权限非常小,他只有两个权限,第一个权限是能登录MySQL数据库,第二个权限是对world.country表的name字段有update权限。
为了正确回答这道题目,我们先看一个例子。

mysql> show grants;
+------------------------------------------------------------------+
| Grants for yaoyuan@%                                             |
+------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `yaoyuan`@`%`                              |
| GRANT SELECT (`first_name`) ON `sakila`.`actor` TO `yaoyuan`@`%` |
+------------------------------------------------------------------+
2 rows in set (0.00 sec)

这里的用户只有对first_name字段的select权限,当然这个用户可以查询first_name ,不能查询字段last_name 。

mysql> select first_name from actor limit 1;
+------------+
| first_name |
+------------+
| PENELOPE   |
+------------+
1 row in set (0.00 sec)mysql> select first_name,last_name from actor limit 1;
ERROR 1143 (42000): SELECT command denied to user 'yaoyuan'@'localhost' for column 'last_name' in table 'actor'

我们再扩展看看如果last_name在where子句中做为条件过滤,可以吗?

mysql> select first_name from actor where last_name='a' limit 1;
ERROR 1143 (42000): SELECT command denied to user 'yaoyuan'@'localhost' for column 'last_name' in table 'actor'

通过实验,我们发现在在where子句中做为条件过滤的字段也需要用户对它有select权限才行。再看看用last_name 字段排序是否可以?

mysql> select first_name from actor order by last_name limit 1;
ERROR 1143 (42000): SELECT command denied to user 'yaoyuan'@'localhost' for column 'last_name' in table 'actor'

通过实验,发现也不行。
同样的道理,CONCAT函数中的字段也要有select权限才行,
因此这个题目正确的答案是A和C,您答对了吗?更多关于MySQL OCP和ORACLE OCP考试下资料请参看下面的视频。

Oracle 19c OCP和MySQL 8.0 OCP应试指南和题库讲解

http://www.lryc.cn/news/30646.html

相关文章:

  • Java死锁
  • BloomFilter原理学习
  • C语言老题新解第1-5题
  • 【数据库系列】MQSQL历史数据分区
  • MyBatis常用的俩种分页方式
  • RPC通信原理解析
  • 【蓝桥杯集训·周赛】AcWing 第93场周赛
  • 蓝桥杯-刷题统计
  • Linux入门教程||Linux Shell 变量|| Shell 传递参数
  • [算法和数据结构]--回溯算法之DFS初识
  • 【LeetCode每日一题】——680.验证回文串 II
  • 【C语言进阶:指针的进阶】你真分得清sizeof和strlen?
  • 【前端必看】极大提高开发效率的网页 JS 调试技巧
  • 【春招面经】视源股份前端一面
  • 插件化开发入门
  • tftp、nfs 服务器环境搭建
  • 汇编系列03-不借助操作系统输出Hello World
  • TPU编程竞赛系列|算能赛道冠军SO-FAST团队获第十届CCF BDCI总决赛特等奖!
  • 【C++】AVL树,平衡二叉树详细解析
  • C/C++开发,无可避免的多线程(篇四).线程与函数的奇妙碰撞
  • elisp简单实例: taglist
  • Azure AI基础到实战(C#2022)-认知服务(3)
  • aws apigateway 使用restapi集成lambda
  • HTML基础
  • ThreadPoolExecutor参数 keepAliveTime allowCoreThreadTimeOut
  • 什么是Hibernate框架?
  • 指针面试笔试题练习
  • docker(三)仓库的搭建、官方私有仓库的加密和认证
  • FPGA实现SDI视频编解码 SDI接收发送,提供2套工程源码和技术支持
  • Android 基础知识4-3.5 RadioButton(单选按钮)Checkbox(复选框)详解