You have an installation of MySQL 8 on Oracle Linux. Consider the outputs:Mysql>SHOW GLOBAL VARIABLESWHERE Varisble_name='tmpdir'OR Variable_name ='tmp_table_size';+------------------+------------+| Variable_name |Value |+------------------+------------+|tmp_tabe_size | 16777216 |+------------------+------------+|tmpdir | /tmp |+------------------+------------+Shell>cd/var/lib/mysqlShell>ls -1|grep tempDrwxr-x---.2 mysql mysql 4096 Dec 11 14:05 #innodb_tempWhich statement is true about disk temporary tables for this installation?A)Temporary tables are created in tmpdir only if configured to use MyISAM。B)Temporary tables are created in tmpdir only after they reach tmp_table_size.C)Temporary tables will use the InnoDB temporary tablespace located in datadir.D)Only internal temporary tables from the optimizer will be created in tmpdir.E)Temporary tables will use the InnoDB temporary tablespace located in /tmp.
1. 选项解析
A) 临时表仅在配置为 MyISAM 时使用 tmpdir
错误。MySQL 8 的默认存储引擎是 InnoDB,临时表默认由 InnoDB 管理。即使显式创建临时表(如 CREATE TEMPORARY TABLE),如果使用 InnoDB 引擎,也会优先使用 #innodb_temp 目录。MyISAM 临时表虽可能使用 tmpdir,但题目未涉及显式配置 MyISAM 的场景,且默认行为不依赖此条件。
B) 临时表仅在超过 tmp_table_size 后使用 tmpdir
错误。tmp_table_size 控制内存中临时表的最大大小,超过时会转为磁盘存储。但 InnoDB 内部临时表直接使用 #innodb_temp 表空间,而非 tmpdir。显式临时表(如用户创建的临时表)若使用内存引擎(如 MEMORY)且数据量超过 tmp_table_size,才会转存到 tmpdir。但题目未明确临时表类型,且 InnoDB 默认行为与此无关。
C) 临时表使用位于 datadir 的 InnoDB 临时表空间
正确。MySQL8.0 中,InnoDB 内部临时表默认存储在数据目录的 #innodb_temp 子目录中。题目中数据目录 var/lib/mysql 存在此目录,且未配置 innodb_tmpdir 覆盖默认路径,因此临时表由 InnoDB 表空间管理。
D) 仅优化器生成的内部临时表使用 tmpdir
错误。优化器生成的内部临时表(如复杂查询中的中间结果)可能使用 tmpdir,但 InnoDB 内部临时表始终优先使用 #innodb_temp。例如,执行 ALTER TABLE 或包含 UNION 的查询时,中间文件可能存储在 tmpdir,但表结构仍由 InnoDB 临时表空间管理。
E) 临时表使用位于 tmp 的 InnoDB 临时表空间
错误。InnoDB 临时表空间默认位于数据目录下的 #innodb_temp,而非 tmpdir(如 tmp)。tmpdir 仅用于其他临时文件(如排序文件)或显式配置为 MyISAM 的临时表。
2. 小结
InnoDB 临时表空间路径
MySQL 8 默认将临时表存储在datadir/#innodb_temp,由参数 innodb_temp_tablespaces_dir 控制。题目中 var/lib/mysql 存在此目录,验证了临时表空间的实际位置。
tmpdir 的作用
tmpdir 主要用于存储排序文件、用户显式创建的 MEMORY 引擎临时表(超过 tmp_table_size 时)等,与 InnoDB 内部临时表无关。
参数优先级
若配置了 innodb_tmpdir,InnoDB 临时表可能使用自定义路径,但题目未配置此参数,因此默认使用 datadir。
Q2 : 保护MySQL数据库免受网络攻击
Which two actions will secure a MySQL server from network-based attacks?A)Use MySQL Router to proxy connections to the MySQL server.B)Place the MySQL instance behind a firewall.C)Use network file system (NFS) for storing data.D)Change the listening port to 3307.E)Allow connections from the application server only.
1. 选项解析
A) 使用 MySQL Router 代理连接
错误。MySQL Router 是官方中间件,可将客户端请求路由到 MySQL 实例,支持负载均衡和故障转移。虽然能间接隐藏真实数据库 IP,但 并非专门用于防御网络攻击,且需额外配置。此选项属于增强可用性而非核心安全措施。
B) 将 MySQL 实例置于防火墙后
正确。防火墙是防御网络攻击的核心工具,可限制对 MySQL 端口(如 3306)的访问,仅允许受信任 IP 或内网流量。例如:
配置 iptables 或云安全组,仅开放应用服务器 IP;
禁用公网 IP 绑定(bind-address = 内网IP)。
此措施直接减少攻击面,是必选项。
C) 使用网络文件系统(NFS)存储数据
错误。NFS 本身存在安全风险(如未加密传输、权限控制复杂),可能引入中间人攻击或数据泄露漏洞。MySQL 推荐本地存储或加密文件系统。
D) 修改监听端口为 3307
错误。修改默认端口(3306)可规避自动化扫描工具,但属于表层防御。攻击者仍可通过端口扫描发现新端口,且需同步调整应用配置。此选项优先级低于防火墙和 IP 限制。
E) 仅允许应用服务器连接
正确。遵循最小权限原则,仅允许业务必需的服务器(如应用服务器)访问 MySQL,可大幅降低横向攻击风险。可以有如下方式:
在 MySQL 配置中设置 bind-address 限制监听 IP;
通过防火墙规则或安全组限制来源 IP;
删除 user@'%' 账户,避免任意远程连接,改为 user@'ip'方式。
2. 小结及建议
针对以上选项小结如下
补充建议
启用SSL/TLS 加密:防止流量窃听(如使用 REQUIRE SSL 配置用户连接)
禁用高危功能:如 local-infile(防止本地文件读取)和 skip-grant-tables(避免权限绕过)
日志监控:启用审计日志和慢查询日志,实时检测异常行为
Q3: MySQL root账号初始化密码
Examine the command, which execute successfully:shell> mysqld --initialize-insecureWhich statement is true?A)The installation creates a temporary test environment with data in the /tmp directory.B)The installation is created without enforcing or generating SSL certificates.C)The root password is created in the error log in plain text.D)The root password is not created allowing easy access from the same host.
1. 选项解析
A) 安装时在 /tmp 目录下创建临时测试环境数据
错误。--initialize-insecure 初始化的是 MySQL的数据目录(默认路径如 /var/lib/mysql),而非 /tmp。/tmp 目录通常用于临时文件(如排序文件),与数据目录无关。
B) 安装时不强制生成或使用 SSL 证书
错误。SSL 证书的生成由独立参数控制(如 --ssl 或 skip-ssl),与 --initialize-insecure 无关。此参数仅影响 root 密码的生成逻辑,不涉及 SSL 配置。
C) Root 密码以明文形式存在于错误日志中
错误。使用 --initialize(非 --initialize-insecure)时,会生成随机密码并记录在错误日志中。但 --initialize-insecure 不会生成任何密码,因此错误日志中无此类信息。
D) Root 密码未创建,允许同一主机无密码访问
正确。--initialize-insecure 的核心作用是跳过 root 密码生成,使 root@localhost 账户密码为空,允许本地用户直接登录(如 mysql -u root)。这在开发环境中常见,但需在生产环境中及时设置密码。
2. 小结与建议
密码状态:--initialize-insecure 初始化后,root 用户无密码
本地访问限制:默认仅允许 root@localhost 无密码登录,需额外配置才能远程访问(如防火墙或用户权限调整)。
安全建议:官方推荐初始化后立即运行 mysql_secure_installation 或手动设置密码。
若需生成随机密码,应使用 --initialize 参数。此时密码会写入错误日志(如 /var/log/mysqld.log),需登录后立即修改
Q4: mysqldump命令
Examine this command:shell> mysqldump --no-create-info --all-databases --result-file=dump.sqlWhich statement is true?A)It will not write CREATE TABLESPACE statements.B)It will not write CREATE LOGFILE GROUP statements.C)It will not write CREATE TABLE statements.D)It will not write CREATE DATABASE statements.
1. 选项解析
A) 不写入 CREATE TABLESPACE 语句
错误。--no-create-info 仅影响表结构(CREATE TABLE 语句)的生成,与表空间(CREATE TABLESPACE)无关。表空间相关的操作通常由存储引擎(如 InnoDB)控制,需通过其他参数(如 --no-tablespaces)禁用。
B) 不写入 CREATE LOGFILE GROUP 语句
错误。CREATE LOGFILE GROUP 是 MySQL 中与日志文件组相关的语句,与 --no-create-info 无关。该参数仅限制表结构和数据的导出逻辑。
C) 不写入 CREATE TABLE 语句
正确。--no-create-info(或 -t)的作用是 仅导出数据,不生成 CREATE TABLE 语句。例如,若导出 mydatabase 的数据,生成的 dump.sql 文件将包含 INSERT 语句,但无表结构定义。
D) 不写入 CREATE DATABASE 语句
错误。--no-create-info 不影响数据库的创建语句。使用 --all-databases 时,默认会包含 CREATE DATABASE 和 USE 语句。若需禁用 CREATE DATABASE,需额外添加 --no-create-db 参数。
2. 小结与说明
no-create-info的功能:仅跳过表结构的生成(CREATE TABLE),不影响数据库或表空间的创建逻辑。若需同时禁用表结构和数据库的创建,需结合 --no-create-db 参数。
all-databases的作用:导出所有数据库时,默认包含 CREATE DATABASE 和 USE 语句,除非显式禁用。
result-file的作用:仅指定输出文件路径,与内容生成无关。
补充部分参数对比说明
--no-create-info | CREATE TABLE语句 | |
--no-create-db | CREATE DATABASE语句 | |
--no-tablespaces | ||
--compact |
Q5: MySQL连接控制插件
The mysqld instance has the connection control plugin enabled with these settings:Connection_control_min_connection_delay=1000Connection_control_max_connection_delay=2000The minimum and maximum delays need to be increased to 3000 and 5000, respectively.A command is executed:Mysql> SET GLOBAL connection_control_min_connection_delay=3000;What is the result?A)The minimum connection value is changed to 2000.B)Only the minimum connection value is increased to 3000.C)The minimum value increases to 3000 and the maximum value increases to 4000.D)An error is returned.
1. 连接控制插件参数说明
在设置connection_control_min_connection_delay和connection_control_max_connection_delay时,必须确保最小值不超过最大值。如果尝试将最小值设置得比当前最大值还高,系统会报错。
2. 选项解析
选项 A 和 B:假设仅修改 min 成功,但忽略参数关系约束,与插件行为矛盾。
选项 C:假设 max 自动调整为 min + 1000,但插件无此类逻辑,需手动调整 max。
选项 D: 正确,因为此时出现违反插件参数约束的情况,所以会出现报错
3. 正确操作步骤
若需将 min 和 max 分别调整为 3000 和 5000,需按以下顺序执行:
先修改 max:
SET GLOBAL connection_control_max_connection_delay=5000;
再修改 min:
SET GLOBAL connection_control_min_connection_delay=3000;

MySQL数据库BUG导致查询不到本该查到的数据
MySQL源码学习系列(一)-- 环境准备及常用命令
MySQL源码学习系列(二)--面试高频问题:general log、slowlog记录顺序
MySQL数据库修改小众参数解决大众问题
MySQL8.0 双密码机制:解决应用程序用户不停机修改密码问题
MySQL8.0.40编译安装
DBA面试题:MySQL缓存池LRU算法做了哪些改进?
慢SQL探秘之为什么我的SQL很慢却没记录在慢查询日志里
MySQL数据恢复







