简述MySQL体系结构以及安装部署MySQL

news2024/11/25 19:19:35

目录

一、简述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: 1

                mysql> 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';

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

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

相关文章

金九银十Java八股文面试题整理(含阿里、腾迅大厂java面试真题)

前言 看到了许多朋友在焦急的准备“金九银十”跳槽面试,甚至很多即将毕业的大学生都在备战秋招,对于学历还算优秀的大学生来说,这是一次离大厂最近的机会,毕竟是应届毕业生,不会对技术有非常严格的要求。 而对于工作…

注解开发配置实例

对比一下xm的配置: 新:注解开发,现在任何框架都有两套配置,一套xml配置,一套注解配置 现在我想把user Dao 和user serve 放到spring 中进行配置 service业务层 看到reipaositerei,就是我们Dao 层 用他来标注初始化方…

WORD模板替换,将文件给前端下载

1.word模板设计填充字段加{{填充字段名}} 2.后端依赖 <poi-tl.version>1.7.3</poi-tl.version> <poi.version>4.1.2</poi.version> <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId>&l…

基于Mediapipe深度学习算法的手势识别系统【含python源码+PyqtUI界面+原理详解】-python手势识别 深度学习实战项目

功能演示 摘要&#xff1a;手势识别是一种通过技术手段识别视频图像中人物手势的技术。本文详细介绍了手势识别实现的技术原理&#xff0c;同时基于python与pyqt开发了一款带UI界面的手势识别系统软件&#xff0c;以便于进行结果显示。手势识别采用了mediapipe的深度学习算法进…

[MMDetection]绘制PR图

评价指标 平均精度与平均召回率 AP 是所有类别的平均值。传统上&#xff0c;这称为“平均精度”(mAP)。我们不区分 AP 和 mAP&#xff08;同样&#xff0c;AR 和 mAR&#xff09; APAP at IoU.50:.05:.95 (primary challenge metric)AP50AP at IoU.50 (PASCAL VOC metric)AP…

数据结构初阶--绪论

目录 一.什么是数据结构 二.什么是算法 三.算法的时间复杂度 四.算法的空间复杂度 五.复杂度练习 题一&#xff1a;消失的数字 题二&#xff1a;旋转数组 一.什么是数据结构 数据结构&#xff1a;是相互之间存在一种或多种特定关系的数据元素的集合。 数据结构的三要素…

【LittleXi】 N-gram模型(C++实现)

LittleXi N-gram模型&#xff08;C实现&#xff09;马尔科夫性 (独立性假设)代码实现英文训练版本中文训练版本 训练效果 N-gram模型&#xff08;C实现&#xff09; 定义&#xff1a;通俗地讲&#xff0c;就是利用前文的单词&#xff0c;来推算下一个最大概率出现的单词 马尔…

Web入门-Web服务器

Web服务器是一个程序软件&#xff0c;对HTTP协议的操作进行封装&#xff0c;使得程序员不必直接对程序进行操作&#xff0c;让Web开发更加便捷&#xff0c;简化web程序开发。主要功能是“通过网上信息浏览服务”。 Tomcat 概念&#xff1a;Tomcat是阿Apache软件基金会一个核心…

Coggle 30 Days of ML(23年7月)任务八:训练BILSTM模型

Coggle 30 Days of ML&#xff08;23年7月&#xff09;任务八&#xff1a;训练BILSTM模型 任务八&#xff1a;使用Word2Vec词向量&#xff0c;搭建BILSTM模型进行训练和预测 说明&#xff1a;在这个任务中&#xff0c;你将使用Word2Vec词向量&#xff0c;搭建BILSTM模型进行文…

【雕爷学编程】Arduino动手做(158)---VL53L0X激光测距模块3

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

从零开始制作一个Web蜜罐扫描器(2)

从零开始制作一个Web蜜罐扫描器(0)_luozhonghua2000的博客-CSDN博客 从零开始制作一个Web蜜罐扫描器(1)_luozhonghua2000的博客-CSDN博客 文件读取和写入实现 上面的工作已经完成了逻辑判断的部分,下面还需要进一步完善一些旁支末节的部分因为爬虫生成的文件是一个ison文件…

熵权法 —— matlab

目录 一、熵权法介绍 二、熵权法赋权步骤 1.指标正向化 mapminmax介绍 2.数据标准化 3.计算信息熵 4.计算权重以及得分 三、实例分析 1.读取数据 2.指标正向化 2.1 越小越优型处理 2.2 某点最优型指标处理 3.数据标准化 4.计算信息熵 5.计算权重 6.计算得分 总…

第三章 技术选型

1、需要考虑以下几点 可控性 必须有人可以兜底&#xff0c;可以解决 稳定性 修改的版本最好可以上下兼容 核心项目不要用最新的技术 commit的时长 是否有团队维护 适用性 更多人都会的技术 易用性 学习曲线 2、有哪些好用的移动端React组件库 3、为什么使用NestJS 1、最像…

【LeetCode: 16. 最接近的三数之和 | 双指针专题 】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

港联证券|涨停不封板意味着什么?

涨停不封板或许是因为股票价格到达了涨停价&#xff0c;可是买卖量还未到达涨停板规则的要求&#xff0c;因而买卖并没有被暂停。涨停不封板也有或许是个股当天涨停之后&#xff0c;又呈现开板的状况。 总归&#xff0c;涨停不封板意味着上方的抛压较多&#xff0c;空方力气大于…

Node.js开发

Node.js是一个基于V8 JavaScript引擎的JavaScript运行时环境。 也就是说Node.js基于V8引擎来执行JavaScript的代码&#xff0c;但是不仅仅只有V8引擎&#xff1a;  前面我们知道V8可以嵌入到任何C 应用程序中&#xff0c;无论是Chrome还是Node.js&#xff0c;事实上都是嵌入…

C++智能指针使用及原理

在讲解之前&#xff0c;先讲述一种RAII思想. 目录 RAII 智能指针原理 auto_ptr auto_ptr的介绍 auto_ptr的实现 unique_ptr unique_ptr的介绍 unique_ptr实现 shared_ptr shared_ptr的介绍 shared_ptr实现 weak_ptr weak_ptr的介绍 weak_ptr的实现 RAII RAII&a…

西安大华时代网络科技有限公司

大华时代是行业领先的软件与信息技术服务企业。我们拥有专业的团队和先进的技术&#xff0c;在金融、电信、高科技和互联网等行业&#xff0c;为客户提供优质的产品、先进的解决方案和热情的服务&#xff01;

【SpringBoot + Mybatis系列】插件机制 Interceptor

【SpringBoot Mybatis系列】插件机制 Interceptor 在 Mybatis 中&#xff0c;插件机制提供了非常强大的扩展能力&#xff0c;在 sql 最终执行之前&#xff0c;提供了四个拦截点&#xff0c;支持不同场景的功能扩展 Executor (update, query, flushStatements, commit, rollbac…

mysql check slow_log造成锁-waiting for table level lock

背景&#xff1a; 我们在生产环境使用mysql的时候开启了slow_log 记录表&#xff0c;但有的时候由于记录数据过大&#xff0c;造成该表损坏 ERROR 1194 (HY000): Table slow_log is marked as crashed and should be repaired 这时候就想着用check table 命令来看看表是否正…