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

news2024/12/28 12:58:48

目录

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了!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/721530.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

月入9000+的CSGO游戏搬砖项目操作细节和疑问 ?给您一一解答

科思创业汇 大家好,这里是科思创业汇,一个轻资产创业孵化平台。赚钱的方式有很多种,我希望在科思创业汇能够给你带来最快乐的那一种! 01 海外CSGO游戏搬砖项目是什么? csgo搬砖是在外服steam上购买包含印花枪皮等等…

9.2、增量表数据同步

1、数据通道 2、Flume配置 1)Flume配置概述 Flume需要将Kafka中topic_db主题的数据传输到HDFS,故其需选用KafkaSource以及HDFSSink,Channel选用FileChannel。 需要注意的是, HDFSSink需要将不同mysql业务表的数据写到不同的路径…

2023.7.4 Dataloader切分

一、 如果文件夹路径是 path/to/folder with spaces/,使用以下方式输入 path/to/folder\ with\ spaces/或者使用引号包裹路径: "path/to/folder with spaces/"这样可以确保命令行正确解析文件夹路径,并将空格作为路径的一部分进…

ADB自动化测试框架

一、介绍 adb的全称为Android Debug Bridge,就是起到调试桥的作用,利用adb工具的前提是在手机上打开usb调试,然后通过数据线连接电脑。在电脑上使用命令模式来操作手机:重启、进入recovery、进入fastboot、推送文件功能等。简单来…

Intellij IDEA 初学入门图文教程(八) —— IDEA 在提交代码时 Performing Code Analysis 卡死

在使用 IDEA 开发过程中,提交代码时常常会在碰到代码中的 JS 文件时卡死,进度框上显示 Performing Code Analysis,如图: 原因是 IDEA 工具默认提交代码时,分析代码功能是打开的,需要通过配置关闭下就可以了…

Linux高性能网络编程:TCP底层的收发过程

今天探索高性能网络编程,但是我觉得在谈系统API之前可以先讲一些Linux底层的收发包过程,如下这是一个简单的socket编程代码: int main() {... fd socket(AF_INET, SOCKET_STREAM, 0);bind(fd, ...);listen(fd, ...);// 如何建立连接...afd …

冒泡排序法(优化与实例演示)

冒泡排序法 冒泡排序法基本介绍 冒泡排序是一种简单而经典的排序算法,它的原理是通过不断比较相邻元素的大小并交换位置,将较大(或较小)的元素逐渐“冒泡”到数组的末尾。这个过程持续进行多轮,直到整个数组按照顺序…

【Zabbix 6.0 监控系统安装和部署】

目录 一、Zabbix 介绍1、zabbix 是什么?2、zabbix 监控原理(重点)3、Zabbix 6.0 新特性4、Zabbix 6.0 功能组件1、Zabbix Server2、数据库3、Web 界面4、Zabbix Agent5、Zabbix Proxy6、Java Gateway 二、Zabbix 6.0 部署1、部署 zabbix 服务…

idea goland 插件 struct to struct

go-struct-to-struct idea goland 插件。实现自动生成 struct 间 转换代码。 https://plugins.jetbrains.com/plugin/22196-struct-to-struct/ IntelliJ plugin that Automatically generate two struct transformations through function declarations Usage define func …

【怎么实现多组输入之EOF】

C语言怎么实现多组输入之EOF C语言之EOF介绍1、什么是EOF?2、EOF的用法3、EOF的扩展3.1、scanf返回值之EOF3.2、scanf函数的返回值有以下几种情况 4、如何是实现多组输入?4.1、多组输入---- 常规写法例程14.2、多组输入---- 实现多组输入的打印例程24.3、…

不想被卷的程序员们,应该学什么?

我真的好像感慨一下,这个世界真的给计算机应届生留活路了吗? 看着周围的同学,打算搞前端、JAVA、C、C的,一个两个去跑去应聘。你以为是00后整治职场? 真相是主打一个卑微:现阶段以学习为主(工…

探寻日本区块链游戏的未来潜力

日本的区块链游戏 日本是全球范围内游戏市场人均利润最高的国家之一。其中,《My Crypto Heroes》的首次公售金额达到了 16,000 ETH。 关键要点: 日本具有强大的游戏基础,使其成为加密游戏发展的理想地区。 日本流行的加密货币游戏包括《My…

Python中jsonpath库使用,及与xpath语法区别

jsonpath库使用 pip install jsonpath 基本语法 JSONPath语法元素和对应XPath元素的对比

Work20230705

//main.c #include "uart4.h" extern void printf(const char *fmt, ...); void delay_ms(int ms) {int i,j;for(i 0; i < ms;i)for (j 0; j < 1800; j); }int main() {while(1){//将获取到的字符1发送到终端//hal_put_char(hal_get_char()1);hal_put_string…

POSTGRESQL SQL 执行用 IN 还是 EXISTS 还是 ANY

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到3群&#xff08;共…

【后端面经-计算机基础】HTTP和TCP的区别

【后端面经-计算机基础】HTTP和TCP的区别 文章目录 【后端面经-计算机基础】HTTP和TCP的区别1. OSI七层模型和相关协议2. TCP协议2.1 特点&#xff1a;2.2 报文格式2.3 三次握手和四次挥手 3. HTTP协议3.1 特点3.2 报文格式3.2 https和http 4. HTTP vs TCP5. 面试模拟参考资料 …

全网最牛,python接口自动化测试-接口sign签名(实战撸码)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 一般公司对外的接…

groupkfold 报错:raise keyerror(f“{not foud} not in index“)

【1】使用groupkfold 的时候出现以上报错&#xff1a;索引错误&#xff0c;groups的索引和x y 的不对应 【2】源代码&#xff1a; 【3】进行修改&#xff1a; 可以成功索引&#xff01;&#xff01;&#xff01;

tomcat下上传html

html 最基本结构服务器xshelltomcat 下载是否可以访问到服务器上传html html 最基本结构 .html 后缀名 <!DOCTYPE HTML> <html><head><meta charset"utf-8"> <title>2306</title></head><body>大家好&#xff01;…

C++图形开发(7):能进行抛物线运动且触墙能反弹的小球

今天来实现一下触墙能反弹的小球、 我们之前所实现的都只是小球的上下&#xff0c;也就是y轴方向的运动&#xff08;详见&#xff1a;C图形开发&#xff08;6&#xff09;&#xff1a;落下后能弹起的小球&#xff09;&#xff0c;那么要使小球能够呈抛物线状运动&#xff0c;我…