初识MySQL:了解MySQL特性、体系结构以及在Linux中部署MySQL

目录

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;

b4ba7deafd684222ac957a2de30fad20.png

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官网

c2124f8e2f214f3aaed62dc54773f1b2.png

2、进入MySQL社区版下载

e60efc068e894cc5ac21f22f2ab26e29.png

3、使用yum方式下载MySQL

9811ef22f1c14e55b6bad13f758cb1f4.png

4、下载对应版本的软件包

8b4fa31e47ae415e80222dd6cc3db1c2.png

5、这里可以不登录直接下载软件包

d8504f8916fd471a81ddb0a7c19dba1e.png

6、复制下载链接

3950794e93b04d1b9a93ca9d776ff03a.png

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

31ba6f3360894874a8310931864e53ef.png

9、这里可以查看一下所有的mysql软件包:

rpm -aq | grep mysql 

f9ed57d39e714949915da44ec9c1ff92.png

注意:如果显示为7个软件包就正确

10、启动mysql服务

systemctl start mysqld

11、查看该服务的状态

systemctl statsus mysqld

d6f4dcb60c07497e91f635a2b07ea054.png 

这里显示服务正常运行就表示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了!

猜你喜欢

转载自blog.csdn.net/qq_68163788/article/details/131561700
今日推荐