目录
一、简述MySQL体系结构
1、连接层:
2、SQL层:
3、存储引擎层:
4、物理文件层:
5、一条SQL语句执行过程:
二、安装部署MySQL(使用yum以及通用二进制方式)
1、前期准备
1.1、关闭防火墙、禁用SELinux
2、使用yum
2.1、在线安装
2.1.1、配置一个安装yum源
2.1.2、安装MySQL数据库
2.2、离线安装:
2.2.1、下载RPM安装包,并上传至服务器
2.2.2、解压
2.2.3、安装
2.2.4、启动MySQL服务,并设置成开机自启动
2.2.5进入MySQL数据库
2.2.6、结果
3、通用二进制方式:
3.1、下载包
3.2、创建用户以及组
3.3、解压,软连接
3.4、初始化
3.5、提供配置文件和服务启动脚本
3.6、启动MySQL
4、查询临时登录密码
5、修改数据库密码
6、MySQL root密码恢复
一、简述MySQL体系结构
MySQL是由SQL接口、解析器、优化器、存储引擎组成。
一共连接层、SQL层、存储引擎层和物理文件层。
1、连接层:
思想:为解决资源的频繁分配,释放所造成的问题,为数据库连接建立一个“缓冲池”。
原理:预先在缓冲池放入一定数量的连接,党需要建立数据库连接时,只需从“缓冲池”中取
出一个,使用完毕之后再放回去。
作用:进行身份验证、线程重用,连接限制、检查内存,数据缓存;管理用户的连接,线程
处理等需要缓存的需求。
2、SQL层:
管理服务和工具组件:从备份和恢复的安全性、复制、集群、管理、配置、迁移和元数据等
方面管理数据库。
SQL接口组件:进行DML、DDL、存储过程、试图、触发器等操作和管理;用户SQL命令接
口。
解析器组件:验证和解析SQL命令。
查询优化器组件:对SQL语句查询进行优化“取、投影和连接”。
缓存和缓冲区:有一系列小缓存组成的。比如表缓存、记录缓存、key缓存、权限缓存等。
3、存储引擎层:
MySQL的存储引擎是插件式的。它根据MySQL AB公司提供的文件访问层的一个抽象接口来制定一种文件访问机制,这种访问机制就叫存储引擎。
MyISAM:它查询速度快,有较好的索引优化和数据压缩技术。但是它不支持事务;
InnoDB:它支持事务,并且提供行级的锁定,应用也相当广泛;
BDB:不在从底层支持BDB;
Memory:适合存储临时数据;
Archive:适合存储历史数据;
4、物理文件层:
支持的文件类型:EXT3、EXT4、NTFS、NFS
文件内容:
1、数据文件
2、日志文件
3、配置文件
4、其他文件
5、一条SQL语句执行过程:
连接层:
(1)提供连接协议:TCP/IP、SOCKET;
(2)提供验证:用户,密码,IP,SOCKSET;
(3)提供专用连接线程:接手用户SQL,返回结果;
SQL层:
(1)接受上层传送的SQL语句;
(2)语法验证模块:验证语句语法,是否满足SQL_MODE;
(3)语义检查:判断SQL语句的类型;DDL:数据定义语言
DCL:数据控制语言
DML:数据操作语言
DQL:数据查询语言
....
(4)权限检查:用户对库表没有权限
(5)解析器:对语句执行前,进行预处理,生成解析树(执行计划),即生成多种执
行方案
(6)优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划。
代价模型:资源(CPU、IO、MEM)的耗损评估性能好坏
(7)执行器:根据最优计划,执行SQL语句,产生执行结果;
执行结果:在磁盘的XXX位置上
(8)提供查询缓存(默认是没开启的):会使用redis tair 代替查询缓存功能;
(9)提供日志记录(日志管理章节):binlog,默认是没开启的。
存储引擎层(类似于Linux中的文件系统):
负责根据SQL层执行的结果,从磁盘上拿数据。
将16进制的磁盘数据,交由SQL结构化成表。
连接层的专用线程返回给用户。
二、安装部署MySQL(使用yum以及通用二进制方式)
1、前期准备
1.1、关闭防火墙、禁用SELinux
systemctl stop firewalld //关闭防火墙
systemctl disable firewalld //永久关闭
禁用SELinux:
进入文档:
vi /etc/selinux/config
将SELINUX= ???
修改为SELINUX=disabled
保存并退出
刷新:setenforce 0 //设置为宽容(警告)模式
推荐使用:#sed -i '/^SELINUX=/ c SELINUX=disabled' /etc/selinux/config
依旧需要刷新
安装常用软件:
yum install wget unzip bash-completion tree vim lrzsz net-tools -y
2、使用yum
2.1、在线安装
2.1.1、配置一个安装yum源
[root@localhost ~]# yum install http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm -y
2.1.2、安装MySQL数据库
[root@localhost ~]# yum install mysql-community-server -y
2.2、离线安装:
2.2.1、下载RPM安装包,并上传至服务器
2.2.2、解压
[root@localhost ~]# mkdir mysql/
[root@localhost ~]# tar xf mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar -C mysql
[root@localhost ~]# cd mysql/
2.2.3、安装
卸载:mariadb-libs
[root@localhost mysql]# rpm -e mariadb-libs postfix
[root@localhost mysql]# yum localinstall -y mysql-community-server-5.7.18-1.el7.x86_64.rpm mysql-community-client-5.7.18-1.el7.x86_64.rpm mysql-community-common-5.7.18-1.el7.x86_64.rpm mysql-community-libs-5.7.18-1.el7.x86_64.rpm -y
2.2.4、启动MySQL服务,并设置成开机自启动
[root@localhost mysql]# systemctl start mysqld
[root@localhost mysql]# systemctl enable mysqld
2.2.5进入MySQL数据库
[root@localhost mysql]# mysql -u root -p
Enter password:
2.2.6、结果
3、通用二进制方式:
3.1、下载包
3.2、创建用户以及组
[root@localhost ~]# groupadd -r mysql
[root@localhost ~]# useradd mysql -r -g mysql -c "MySQL Server" -s /bin/false
3.3、解压,软连接
[root@localhost ~]# tar xf mysql-5.7.14-linux-glibc2.5-x86_64.tar -C /usr/local
[root@localhost ~]# tar xf /usr/local/mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
创建软连接:方便以后升级
[root@localhost ~]# ln -sv /usr/local/mysql-5.7.14-linux-glibc2.5-x86_64 /usr/local/mysql'/usr/local/mysql' -> '/usr/local/mysql-5.7.14-linux-glibc2.5-x86_64'
3.4、初始化
[root@localhost ~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data
3.5、提供配置文件和服务启动脚本
[root@localhost ~]# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
修改配置文件:vim /etc/my.cnf
[mysqld]
...
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
服务脚本:
[root@localhost ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
添加系统服务,并设置为开机自启动
[root@localhost ~]# chkconfig --add mysqld
[root@localhost ~]# chkconfig mysqld on
3.6、启动MySQL
[root@localhost mysql]# mysql -u root -p
Enter password:
4、查询临时登录密码
awk '/temporary password/ {print $NF}' /var/log/mysqld.log
5、修改数据库密码
设置及修改MySQL root用户密码
方法1:# mysqladmin -uroot -p'123456' password '123'
[root@node4 ~]# mysqladmin -uroot -p password
Enter password: 旧密码
New password: 新密码
Confirm new password: 再次输入新密码
方法2:
mysql> alter user root@localhost identified by '123';
Query OK, 0 rows affected (0.00 sec)
方法3:
mysql> SET PASSWORD FOR 'root'@'localhost' = '123456';
Query OK, 0 rows affected (0.00 sec)方法4:
mysql> update mysql.user set authentication_string=password('12345')
-> where user="root" and host="localhost";
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
6、MySQL root密码恢复
思路:启动时跳过权限表,设置密码。
配置文件添加[mysqld]
skip-grant-tables
方法1:
mysql> update mysql.user set authentication_string=password('123456')
-> where user='root' and host='localhost';
mysql> flush privileges;
方法2:
mysql> flush privileges;
mysql> ALTER USER root@localhost identified by '123456';