治理连贯与权限校验
连贯数据库时负责监听数据库端口申请的便是连接器。连贯命令如下所示:# mysql ‐h host[数据库地址] ‐u root[用户] ‐p root[明码] ‐P 3306
连贯命令中的 mysql 是客户端工具,用来跟服务端建设连贯。在实现经典的 TCP 握手后,连接器就要开始认证你的身份,这个时候用的就是你输出的用户名和明码。1、如果用户名或明码不对,你就会收到一个 "Access denied for user" 的谬误,而后客户端程序完结执行。2、如果用户名明码认证通过,连接器会到权限表外面查出你领有的权限。之后,这个连贯外面的权限判断逻辑,都将依赖于此时读到的权
限。这就意味着,一个用户胜利建设连贯后,权限会缓存在一个 seesion 中,此时即便你用管理员账号对这个用户的权限做了批改,也不会影响曾经存在连贯的权
限。批改实现后,只有再新建的连贯才会应用新的权限设置。用户的权限表在零碎表空间的 mysql 的 user 表中。
一个特地鸡肋的存在,就是把查问后果放在缓存里,下次有同样的 sql 间接从缓存中取数据,但对缓存数据所关联的表的任何批改都会导致缓存被清空,只有在变动简直没有的动态表有存在价值,8.0 当前的 mysql 曾经移除了查问缓存
如果没有命中缓存,那么 mysql 行将开始剖析输出的 sql 语句,依据 sql 语句的关键字和语句构造对 sql 进行拆分,辨认出 SQL 的目标。词法分析器分成 6 个次要步骤实现对 sql 语句的剖析
1、词法剖析
2、语法分析
3、语义剖析
4、结构执行树
5、生成执行打算
6、打算的执行
SQL 语句的剖析分为词法剖析与语法分析,mysql 的词法剖析由 MySQLLex[MySQL 本人实现的] 实现,语法分析由 Bison 生
成,通过 bison 语法分析之后,会生成一个这样的语法树
通过了分析器,MySQL 就晓得你要做什么了。在开始执行之前,还要先通过优化器的解决。优化器是在表外面有多个索引的时候,决定应用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连贯程序。如果有多种计划最终的执行后果是雷同的,那么优化器会抉择一个执行效率更高的计划。
优化过后 mysql 就曾经确定了该 sql 语句的目标,开始执行过程之前会先进行权限判断,如果权限没有问题则开表执行,否则返回错误信息。执行过程依据表的存储引擎类型去调用引擎提供的接口,例如 innoDB 等存储引擎。
mysql 的 store 层比拟罕用的有三种
innoDB,Myisam,memory
mysql 的 binlog 是 Server 层实现的二进制日志, 他会记录咱们的 cud 操作,特点如下:1、Binlog 在 Server 层实现(引擎共用)2、Binlog 为逻辑日志, 记录的是一条语句的原始逻辑
3、Binlog 不限大小, 追加写入, 不会笼罩以前的日志
误删数据 / 库, 能够应用 binlog 进行归档复原!
但须要先开启 MySQL 的 binlog 性能。配置 my.cnf 开启 binlog
log‐bin=/usr/local/mysql/data/binlog/mysql‐bin
binlog‐format=ROW
sync‐binlog=1
留神 5.7 以及更高版本须要配置本项:server‐id=123454(自定义, 保障唯一性);
#binlog 格局,有 3 种 statement,row,mixed,statement 示意存储执行的 sql 语句,分布式的时候有可能造成数据不统一;row 示意存储的是 sql 执行后最终的数据后果,但会影响效率;mixed 是前两种的合体,效率最低。