Mysql基础架构
1.1|连接器
1.2|缓存(不推荐使用)
当连接建立完成,Mysql拿到一个查询请求后,会先到查询缓存中查看之前是否执行过这条语句,执行过的语句其结果可能以key-value的方式存储在内存中,key为查询语句,value为查询结果,如果在缓存中找到则直接返回。(注:Mysql8.0版本已经直接将查询缓存的功能移除)
1.3|分析器
分析器首先会对语句进行“词法分析”,Mysql需要识别出SQL语句中的字符串所代表的含义;然后对SQL语句进行语法规则检查,判断当前SQL语句是否满足Mysql语法。
1.4|优化器
优化器用于确定当前SQL语句的执行方案,如选择当前SQL语句使用哪个索引,选择多表关联查询时表的连接顺序等。
1.5|执行器
执行器负责通过调用存储引擎提供的接口,在开始执行之前,需要判断当前用户是否对这个表有没有对应操作的权限,如果有权限,就打开表继续执行,执行器会根据表引擎的定义去使用对应引擎提供的接口。
环境安装
操作系统:centos
mysql版本:5.7
# 下载
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
# 解压
tar xf mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar
# 安装依赖
yum -y install libaio
yum -y install perl-CPAN
# 安装mysql
rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
# 启动服务
systemctl start mysqld.service
# 查看mysql状态
systemctl status mysqld.service
# 获取临时密码
grep 'temporary password' /var/log/mysqld.log
# 重设密码
# 登录mysql
mysql -uroot -p # 输入临时密码
# 更改密码安全策略
set global validate_password_policy=0;
set global validate_password_length=1;
# 重设密码
set password for root@localhost=password('123456');
# 分配用户
# 创建新用户
use mysql;
create user 'mysql_user'@'%' identified by '!@#22341ssdf';
# 设置远程登录权限
grant all privileges on *.* to 'mysql_user'@'%' identified by '!@#22341ssdf';
# 刷新配置
flush privileges;