目录
MySQL简介
MySQL特性
MySQL体系结构
SQL的四个层次:
连接层:
SQL层:
插件式存储引擎:
物理文件层:
一条SQL语句的执行流程:
MySQL在Linux中的安装、部署
首先需要下载mysql软件包:
MySQL简介
MySQL是一个小型关系数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被sun公司10亿美金收购。2009年,SUN又被Oracle以74亿美金收购。
目前MySQL被广泛地应用在Internet上的中小型网站中。由于体积小、速度快、总体拥有成本低,尤其是开放源代码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
MySQL特性
1、使用c和c++编写,并使用了多种编译器进行测试,保证源代码的可移植性。(运行效率高(更靠近底层))
2、支持多种操作系统
3、为多种编程语言提供了API。
4、支持多线程、充分利用CPU资源,支持多用户
5、优化SQL查询算法,有效的提高查询速度。
6、可以作为一个单独的应用程序在客户端服务器网络环境中,也可以作为一个库嵌入到其他的额软件中
7、提供多语言支持
8、提示TCP/IP、ODBC和IDBC等多种数据库连接途径
9、提供用于管理、检测、优化数据库操作的管理工具
10、可以处理拥有上千万条记录的大型数据库
MySQL体系结构
Mysql是由SQL接口、解析器、优化器、缓存、存储引擎组成的;
Connectors:不同语言中与不同SQL的交互
Managemen Serveices & Utilities:系统管理和控制工具
Connection Pool:连接池,管理缓冲用户连接,线程处理等需要缓存的需求
SQL Interface:SQL接口,接收用户的SQL命令,并且返回用户需要查询的结果
Parser:解析器,SQL命令传递到解析器的时候会被解析器验证和解析
Optimizer:查询优化器,SQL语句在查询之前会使用查询优化器对查询进行优化
Cache和Buffer:查询缓存,如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据
Engine:存储引擎,存储引擎是Mysql中具体与文件打交道的子系统
SQL的四个层次:
连接层:
思想:为了解决资源的频繁分配、释放造成的问题,为数据库建立一个缓冲池。
原理:预先在缓冲池放入一定数量的连接,当需要数据库连接时,只需要从“缓冲池”当中取出一个,使用完毕后再放回去。
作用:进行身份验证、线程重用、连接限制、检查内存,数据的缓存;管理用户的连接,线程处理等需要缓存的需求
SQL层:
管理服务和工具组件:从备份和恢复的安全性、复制、集群、管理、配置、迁移和元数据等方面管理数据库
sql接口组件:进行DML、DDL、存储过程、视图、触发器等操作和管理;用户SQL命令接口
解析器组件:验证和解析SQL命令
查询优化器组件对SQL语句查询进行优化、“选取、投影和连接”
缓存和缓冲区:由一系列小缓存组成的,比如表缓存,记录缓存,key缓存,权限缓存等
插件式存储引擎:
存储引擎:Mysql的存储引擎是插件式的,它根据Mysql AB公司提供的文件访问层的一个抽象接口来定制的一种访问机制,这种访问机制被称为存储引擎;
MYISAM
查询速度快,由较好的索引优化和数据压缩技术,但是不支持事物
InnoDB
它支持事务,并且提供行级的锁定,应用很广泛(默认的模式)
BDB:不再从底层支持BDB
Memory:适合存储临时数据
Archive:适合存储历史数据
物理文件层:
支持的文件类型:EXT3、4、NTFS、NFS
文件内容:数据文件、日志文件、配置文件、其他文件
一条SQL语句的执行流程:
连接层:
(1)提供连接协议:TCP/IP、SOCKET
(2)提供验证:用户、密码、IP、SOCKET
(3)提供专用连接线程:接收用户SQL,返回结果
可以使用这条语句查看连接线程基本情况:
mysql> show processlist;
SQL层:
(1)接收上层传送的SQL语句
(2)语法验证模块:验证语句语法,是否满足SQL_MOOE
(3)语义检测:判断SQL语句的类型
- DDL :数据定义语言
- DCL :数据控制语言
- DML :数据操作语言
- DQL: 数据查询语言
(4)权限检查:用户对库表有没有权限
(5)解析器:对语句执行前,进行预先处理,生成解析树(执行计划),即生成多种执行方案
(6)优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划
代价模型:资源的耗损平库性能的好坏
(7)执行器:根据最优执行计划,执行SQL语句,产生执行结果
(8)提供查询缓存(默认关闭),会使用redisrair替代查询缓存功能
(9)提供日志记录(日志管理章节):binlog,默认是没有开启的
存储引擎层:(类似于Linux中的文件系统)
负责根据SQL层执行的结果,从磁盘上拿数据
将16进制的磁盘数据,交由SQL结构化化成表
连接层的专用线程返回给用户。
MySQL在Linux中的安装、部署
使用仓库的方式安装
无论是使用哪种方式进行安装首先我们需要去获取mysql的安装包:
mysql官网:www.mysql.com
首先需要下载mysql软件包:
1、进入MySQL官网
2、进入MySQL社区版下载
3、使用yum方式下载MySQL
4、下载对应版本的软件包
5、这里可以不登录直接下载软件包
6、复制下载链接
7、然后进入到linux命令行中使用命令下载该软件包:
rpm -i https://repo.mysql.com//mysql80-community-release-el9-1.noarch.rpm
警告:/var/tmp/rpm-tmp.soD57S: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY
8、然后安装mysql-server
yum install my-server -y
9、这里可以查看一下所有的mysql软件包:
rpm -aq | grep mysql
注意:如果显示为7个软件包就正确
10、启动mysql服务
systemctl start mysqld
11、查看该服务的状态
systemctl statsus mysqld
这里显示服务正常运行就表示sql服务已经成功启动了
如果上面一些正常我们就可以正常使用mysql了
12、注意在输入之前我们可以查询一下默认的登录mysql的密码:
sudo grep 'temporary password' /var/log/mysqld.log
2023-07-05T13:57:47.521864Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: iOMZ>nuaf9oq(最后这里就是默认密码)
这条命令的结果会显示默认密码,下一步会使用
13、这时候就可以尝试登录MySQL了
mysql -u root -p
Enter password: (这里需要输入密码就输入刚才查找到的默认密码)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 21
Server version: 8.0.33 MySQL Community Server - GPL
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
13、然后我们就可以正常的进入sql了,但是当我们尝试想要查看一下数据库时却会报错
因为我们需要修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '修改后的密码';
注意:这里的密码必须包含字母大小写+数字+特殊字符
14、这时候我们就可以正常的查询到数据库了
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.15 sec)
mysql>
到这里数据库的安装就完成了,我们可以快乐的使用MySQL了!