MySQL 8.0 OCP 英文题库解析(二)

发布于:2025-05-10 ⋅ 阅读:(14) ⋅ 点赞:(0)

Oracle 为庆祝 MySQL 30 周年,截止到2025.07.31 之前。所有人均可以免费考取 原价245美元的MySQL OCP 认证。
从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。
本期公布试题6~15。

试题6:

Choose two.Examine this statement, which executes successfully:
CREATE TABLE employees
( emp_no int unsigned NOT NULL,
birth_date date NOT NULL,
first_name varchar(14) NOT NULL,
last_name varchar(16) NOT NULL,
hire_date date NOT NULL,
PRIMARY KEY (emp_no))ENGINE=InnoDB;
Now examine this query:
SELECT emp_no, first_name, last_name, birth_date FROM employees WHERE MONTH (birth_date) = 4;
You must add an index that can reduce the number of rows processed by the query. Which two statements can do this?

D)ALTER TABLE employees ADD INDEX (birth_date); [错误] 
E)ALTER TABLE employees ADD COLUMN birth_month tinyint unsigned GENERATED ALWAYS AS (birth_date;->>'$.month') VIRTUAL NOT NULL, ADD INDEX (birth_month) ; [错误] 
A)ALTER TABLE employees ADD INDEX ((CAST (birth_date ->>'$.month' AS unsigned))); [错误] 
C)ALTER TABLE employees ADD COLUMN birth_month tinyint unsigned GENERATED ALWAYS AS 
(MONTH (birth_date)) VIRTUAL NOT NULL, ADD INDEX (birth_month) ; [正确] 
F)ALTER TABLE employees ADD INDEX ((MONTH (birth_date))); [正确] 
B)ALTER TABLE employees ADD INDEX (birth_date DESC) ; [错误] 

解析:

如题所诉的表结构,执行一个select的查询,添加一个可以减少查询处理的行数的索引。哪两个语句可以执行此作?
查询条件是MONTH(birth_date) = 4,即查找生日在4月的员工。为了优化这个查询,我们需要创建一个能够加速MONTH(birth_date)计算的索引。

D) ADD INDEX (birth_date) 普通日期索引,使用函数后无法使用该索引,错误
E) 语法错误,birth_date->>' . m o n t h ′ 不适用于日期类型 A ) 语法错误, b i r t h d a t e − > > ′ .month'不适用于日期类型 A) 语法错误,birth_date->>' .month不适用于日期类型A)语法错误,birthdate>>.month’不适用于日期类型

C) ALTER TABLE employees ADD COLUMN birth_month tinyint unsigned GENERATED ALWAYS AS (MONTH(birth_date)) VIRTUAL NOT NULL, ADD INDEX (birth_month);
创建一个虚拟列存储月份值,然后为该列创建索引
查询可以改为使用birth_month=4,能有效利用索引

F) ALTER TABLE employees ADD INDEX ((MONTH(birth_date)));
MySQL 8.0+支持函数索引
直接为MONTH(birth_date)表达式创建索引
查询可以直接利用这个索引

试题7:

Choose two.Which two queries are examples of successful SQL injection attacks?

E)SELECT id, name FROM user WHERE id=23 OR id=32 AND 1=1; [错误] 
A)SELECT user, passwd FROM members WHERE user = ' ? ' ; INSERT INTO members ('user' , 'passwd' ) VALUES ('bob@example.com' , 'secret' ) ;-- '; [正确] 
D)SELECT id, name FROM user WHERE id=23 OR id=32 OR 1=1; [错误] 
C)SELECT id, name FROM user WHERE user.id= (SELECT members.id FROM members) ; [错误] 
F)SELECT email, passwd FROM members WHERE email = 'INSERT INTO members('email' , ' passwd ' ) VALUES ('bob@example.com' , 'secret') ;-- '; [错误] 
B)SELECT user, phone FROM customers WHERE name = ' \\; DROP TABLE users; -- '; [正确] 

解析

哪两个查询是成功的 SQL 注入攻击示例

A) SELECT user, passwd FROM members WHERE user = ’ ? ’ ; INSERT INTO members (‘user’ , ‘passwd’ ) VALUES (‘bob@example.com’ , ‘secret’ ) ;-- ‘;
这是一个典型的SQL注入,攻击者通过输入’; INSERT INTO members…来终止原查询并插入新记录
–注释掉原语句剩余部分,使攻击语句能完整执行

B) SELECT user, phone FROM customers WHERE name = ’ \; DROP TABLE users; – ';
这是著名的"小Bobby表"注入攻击变种
攻击者通过输入; DROP TABLE users; --来终止原查询并执行DROP TABLE操作
–注释掉后续可能存在的引号或语句

F) SELECT email, passwd FROM members WHERE email = 'INSERT INTO members(‘email’ , ’ passwd ’ ) VALUES (‘bob@example.com’ , ‘secret’) ;-- ';
虽然看起来像注入尝试,但整个内容被作为email字符串值处理,不会被执行

试题8:

Choose two.Which two tools are available to monitor the global status of InnoDB locking?

F)INFORMATION_SCHEMA.INNODB_METRICS [错误] 
A)SHOW ENGINE INNODB STATUS; [正确] 
D)SHOW STATUS; [正确] 
C)INEORMATION_SCHEMA.INNODB_TABLESTATS . [错误] 
E)INFORMATION_SCHEMA.STATISTICS [错误] 
B)SHOW TABLE STATUS; [错误]

解析

选择两个可用于监控 InnoDB 锁定的全局状态

F) INFORMATION_SCHEMA.INNODB_METRICS
提供InnoDB各种指标数据,但不专门针对锁状态监控

A) SHOW ENGINE INNODB STATUS;
这是监控InnoDB状态(包括锁信息)的最直接命令
输出包含专门的"TRANSACTIONS"部分显示当前锁等待情况
会显示死锁信息、锁等待事务等关键锁定状态

D) SHOW STATUS;
显示服务器状态变量,包含许多与InnoDB锁相关的指标
如Innodb_row_lock_current_waits(当前等待行锁数量)
Innodb_row_lock_time(行锁总等待时间)等全局锁统计信息

C) INFORMATION_SCHEMA.INNODB_TABLESTATS
提供InnoDB表统计信息,与锁监控无关

E) INFORMATION_SCHEMA.STATISTICS
存储表索引统计信息,不包含锁数据

B) SHOW TABLE STATUS;
显示表的存储引擎、行数等基本信息,不涉及锁状态

试题9:

Choose two.Which two authentication plugins require the plaintext client plugin for authentication to work?

D)PAM authentication [正确] 
F)LDAP SASL authentication [错误] 
C)Windows Native authentication [错误] 
B)SHA256 authentication [错误] 
E)MySQL Native Password [错误] 
A)LDAP authentication [正确]

解析

选择两个身份验证插件需要纯文本客户端插件才能进行身份验证的选项。
这种只需要记住就行。其他选项不需要明文密码。

D) PAM authentication (PAM认证)
PAM(Pluggable Authentication Modules)认证需要客户端发送明文密码
因为外部PAM系统需要原始密码进行验证,不能使用哈希值
必须使用mysql_clear_password客户端插件发送未加密的密码

A) LDAP authentication (LDAP认证)
标准LDAP认证同样需要客户端发送明文密码
LDAP服务器需要原始密码进行绑定操作和验证
必须使用mysql_clear_password客户端插件

试题10:

Which three are types of information stored in the MySQL data dictionary?

C)access control lists [正确] 
D)server runtime configuration [错误] 
F)view definitions [正确] 
E)server configuration rollback [错误] 
B)performance metrics [错误] 
G)stored procedure definitions [正确] 
A)InnoDB buffer pool LRU management data [错误] 

解析

MySQL 数据字典中存储的信息类型是哪三种?

正确选项是C、F和G:
访问控制列表(ACL) - 用户权限信息
视图定义 - 视图的元数据和SQL定义
存储过程定义 - 存储过程和函数的源代码

这些是MySQL数据字典(8.0版本后引入)中存储的核心元数据类型,而其他选项要么是运行时数据,要么存储在系统其他部分。数据字典主要存储数据库对象的元数据信息,是MySQL系统表空间的重要组成部分。

试题11:

试题12:
Choose two.Examine this SQL statement:mysql>
GRANT r_read@localhost TO mark WITH ADMIN OPTION;
Which two are true?

A) Mark can grant the privileges assigned to the r_read@localhost role to another user. [错误] 
D) Mark must connect from localhost to activate the r_read@localhost role. [错误] 
B) Mark can grant the r_read@localhost role to another user. [正确] 
E) Mark can revoke the r_read@localhost role from another role. [正确] 
F) ADMIN OPTION allows Mark to drop the role. [错误] 
C) ADMIN OPTION causes the role to be activated by default. [错误] 

解析

本题考查mysql赋予细节。

r_read@localhost
这是一个角色名称,@localhost 表示该角色定义时限定在本地主机(角色名称可以包含主机部分,类似用户账户的格式)。
TO mark
将角色授予给用户 mark(假设 mark 是一个已存在的用户)。
WITH ADMIN OPTION
关键部分,表示授予 mark 用户 管理该角色的权限,包括:
    将 r_read@localhost 角色再授予其他用户。
    从其他用户撤销 r_read@localhost 角色。

A) Mark可以授予r_read@localhost角色的权限给其他用户
错误:ADMIN OPTION只能授予/撤销角色本身,不能单独授予角色的权限
要授予具体权限需要明确的权限授予,不是ADMIN OPTION的功能

D) Mark必须从localhost连接才能激活r_read@localhost角色
错误:角色激活与连接来源无关
角色名中的@localhost只是角色标识符的一部分,不影响使用

B) Mark可以将r_read@localhost角色授予其他用户,这里注意是角色本身,不是角色权限。
WITH ADMIN OPTION允许Mark将该角色分配给其他用户
这是ADMIN OPTION的主要功能,类似于权限的传递

E) Mark可以撤销其他用户的r_read@localhost角色
拥有ADMIN OPTION的用户可以撤销该角色
包括从其他用户或角色中撤销此角色的分配

F) ADMIN OPTION允许Mark删除该角色
错误:ADMIN OPTION不包含删除角色的权限
删除角色需要单独的DROP ROLE权限

C) ADMIN OPTION会导致角色默认激活
错误:角色是否默认激活由SET DEFAULT ROLE决定
ADMIN OPTION不影响角色的激活状态

试题13:

Choose two.Which two statements are true about general tablespaces?

B)Dropping a table from a general tablespace releases the space back to the operating system. [错误] 
E)A general tablespace can have multiple data files. [错误] 
A)General tablespaces support temporary tables. [错误] 
C)A new table can be created explicitly in a general tablespace. [正确] 
D)An existing table can be moved into a general tablespace. [正确] 

解析

本题考查general表空间的使用
B)Dropping a table from a general tablespace releases the space back to the operating system. [错误]
从通用表空间删除表会释放空间回操作系统
错误:通用表空间的空间不会自动释放回操作系统
需要手动执行ALTER TABLESPACE … DROP DATAFILE来释放空间

E) 一个通用表空间可以有多个数据文件
错误:每个通用表空间只能有一个数据文件(.ibd文件)
但可以动态扩展这个数据文件的大小

A) 通用表空间支持临时表
错误:通用表空间不支持临时表
临时表只能存储在临时表空间或独立表空间中

C) 可以显式地在通用表空间中创建新表
使用CREATE TABLE … TABLESPACE tablespace_name语法
例如:CREATE TABLE t1 (id INT) TABLESPACE ts1;

D) 可以将现有表移动到通用表空间中
使用ALTER TABLE … TABLESPACE语法
例如:ALTER TABLE t1 TABLESPACE ts1;

试题14:

Which three methods are part of a ‘scale up’ approach to capacity planning?

E)adding more storage to your disk array [正确] 
G)adding a new node to InnoDB Cluster [错误] 
D)adding more RAM [正确] 
C)adding a replication slave [错误] 
F)sharding the server into a parallel server farm [错误] 
B)adding more CPU power [正确] 
A)adding additional MySQL servers to the existing host [错误]

解析

题目要求选择三种属于"纵向扩展(Scale Up)"容量规划的方法
E) 为磁盘阵列添加更多存储
G) 向InnoDB集群添加新节点,这是横向扩展(Scale Out)方法,错误
D) 增加更多RAM,扩展服务器内存
C) 添加复制从服务器,属于横向扩展的读写分离方案
F) 将服务器分片到并行服务器集群,典型的横向扩展分片方案
B) 增加更多CPU资源
A) 向现有主机添加额外的MySQL服务器,多实例部署也属于横向扩展思路

正确选项是E、D和B:
增加磁盘存储 - 扩展存储容量
增加内存 - 提升缓冲能力
增加CPU - 增强计算能力

试题15:

Choose three.A user wants to connect without entering his or her username and password on the Linux command prompt.Which three locations can be used to store the user’s mysql credentials to satisfy this requirement?

A)$HOME/.mysqlrc file [错误] 
F)$MYSQL_HOME/my.cnf file [错误] 
C)DATADIR/mysqld-auto.cnf file [错误] 
B)/etc/my.cnf file [正确] 
E)$HOME/.mylogin.cnf file [正确] 
G)$HOME/.mysql/auth/login file [错误] 
D)$HOME/.my.cnf file [正确]

解析

选择 3 个。用户希望在不在 Linux 命令提示符上输入其用户名和密码的情况下进行连接。可以使用哪三个位置来存储用户的 mysql 凭证以满足此要求?

正确选项是B、E和D:
/etc/my.cnf - 系统级配置文件(需注意权限安全)
~/.mylogin.cnf - 加密的个人凭证文件(最安全)
~/.my.cnf - 传统的个人配置文件(需设置严格权限)

B) /etc/my.cnf 文件
系统级MySQL配置文件
可以在[client]部分添加用户凭证
适用于所有用户共享的配置

E) $HOME/.mylogin.cnf 文件
用户家目录下的加密凭证文件
使用mysql_config_editor工具创建
比.my.cnf更安全(凭证被加密)

D) $HOME/.my.cnf 文件
用户家目录下的MySQL配置文件
最常见的个人免密登录配置方式
在[client]部分添加用户名和密码

A) $HOME/.mysqlrc 文件
MySQL不使用此文件存储凭证
不是标准配置文件

F) $MYSQL_HOME/my.cnf 文件
虽然这是MySQL配置文件
但不推荐用于存储用户凭证(通常是管理员使用)

C) DATADIR/mysqld-auto.cnf 文件
用于持久化系统变量设置
不用于存储客户端连接凭证

G) $HOME/.mysql/auth/login 文件
MySQL不以此方式存储登录凭证
不是标准认证文件位置


网站公告

今日签到

点亮在社区的每一天
去签到