笔记:慕课网MySQL面试
MySQL版本
工作中使用的MySQL是什么版本的?为什么选择这个版本?
答题技巧:
当前公司使用到的版本
枚举所用发行版的优点,说明为什么不使用官方版本
知识点:
MySQL常见的发行版
MySQL官方企业版(收费)、社区版(免费)
Percona MySQL(基于社区版二次开发,免费提供了一些类似企业版的收费工具)
MariaDB(MySQL创始人基于其源码开发的另一个数据库)
各个发行版之间的区别及优缺点
如何决定是否要对MySQL进行升级?如何进行升级?
答题技巧:
是否升级:
升级可以给业务带来的好处
是否可以解决业务上某一方面的痛点
是否可以解决运维上某一方面的痛点
升级可能给业务带来的风险、影响
对原业务程序的支持是否有影响
对原业务程序的性能是否有影响
如何升级:
数据库升级方案的制定
评估受影响的业务系统
升级的详细步骤:对待升级数据库进行备份;升级Slave服务器版本;手动进行主从切换;升级Master服务器版本;升级完成后进行业务检查。
升级后数据库的环境检查
升级后的业务检查
升级失败的回滚方案
升级失败回滚步骤
回滚后的数据库环境检查
回滚后的业务检查
最新的MySQL版本是什么?它有什么特性比较吸引你?
知识点:
MySQL8.0新特性



用户管理
如何在给定场景下为某用户授权
知识点:
如何定义数据库帐号?
使用
用户名@可访问控制列表
格式定义帐号可访问控制列表一般格式如下:
%
:表示可以从所有外部主机访问192.168.1.%`:表示可以从192.168.1网段访问
使用CREATE USER命令建立用户
MySQL常用的用户权限
可以使用
show privileges;
命令查看权限的作用以及拥有该权限的用户Admin
DDL
DML
如何为用户授权?
遵循最小权限原则
使用grant命令给用户进行授权
使用revoke命令回收用户权限
如何保证数据库帐号安全
数据库用户管理流程规范
最小权限原则
密码强度策略
密码过期原则和限制密码重用原则
password_option: { PASSWORD EXPIRE [DEFAULT | NEVER | INTERVAL N DAY] | PASSWORD HISTORY {DEFAULT | N} | PASSWORD REUSE INTERVAL {DEFAULT | N DAY} | PASSWORD REQUIRE CURRENT [DEFAULT | OPTIONAL] }
密码管理策略(如密码安全强度等 )
如何从一个实例迁移数据库帐号到另一个实例

导出用户建立及授权语句:pt-show-grants u=username,p=password,h=localhost
在待迁移的实例上执行该语句就会生成授权语句,然后我们切换到目标实例上执行授权语句即可。
服务器配置
请分析一个Group By
语句的异常原因
Group By
语句的异常原因给出如下数据表:

使用以下语句查询及其结果:

理论上上述语句不应该执行成功,当时在此时不仅成功执行而且还输出了数据,只是输出的数据不符合预期。如果将SQL_MODE参数设置为ONLY_FULL_GROUP_BY
,那么对于GROUP BY
聚合操作出现在SELECT
中的列、HAVING
或者ORDER BY
子句的非聚合列,没有在GROUP BY
中出现将会抛出SQL语法检查报错。
查看当前SQL_MODE:show variables like 'sql_mode';
设置session级别的SQL_MODE:set session sql_mode='ONLY_FULL_GROUP_BY';
如果你需要设置多个值则用,
分隔
遵守ANSI
标准需要给SQL_MODE
设置以下值:
ANSI_QUITES
,将禁止使用双引号来引用字符串,要求使用单引号。REAL_AS_FLOAT
,将float作为real的同义词(默认是double作为real的同义词)PIPES_AS_CONCAT
,将||
视为字符串的连接操作符而非或运算符
或者设置SQL_MODE
值为ANSI
常用的SQL_MODE值:
STRICT_TRANS_TABLES
:在事务存储引擎上启用严格模式。SREICT_ALL_TABLES
:在所有存储引擎上启用严格模式。ERROR_FOR_DIVISION_BY_ZERO
:不允许0作为除数。NO_AUTO_CREATE_USER
:在用户不存在时不允许grant语句自动建立用户。NO_ZERO_IN_DATE
:日期数据内不能含0。NO_ZERO_DATE
:日期数据不能含0。NO_ENGINE_SUBSTITUTION
:当指定的存储引擎不可用时报错。
或者设置SQL_MODE
值为TRADITIONAL
如何比较系统运行配置和配置文件中的配置是否一致
举几个MySQL中的关键性能参数
日志
存储引擎
MySQL架构
备份恢复
管理及监控
优化及异常
最后更新于
这有帮助吗?