二MySQL 介绍及 MySQL 安装与配置

Posted Amo Xiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二MySQL 介绍及 MySQL 安装与配置相关的知识,希望对你有一定的参考价值。

文章目录

一、新手如何学习 mysql

在学习 MySQL 数据库之前,有很多学生都会询问笔者如何才能学习好 MySQL 8.0 的相关技能呢?下面就来讲述学习 MySQL 的方法。

  1. 培养兴趣。兴趣是最好的老师,不论学习什么知识,兴趣都可以极大地提高学习效率。当然,学习 MySQL 也不例外。
  2. 夯实基础。计算机领域的技术非常强调基础,刚开始学习可能还认识不到这一点,随着技术应用的深入,只有打下扎实的基础功底,才能在技术的道路上走得更快、更远。对于 MySQL 的学习来说,SQL 语句是其中最为基础的部分,很多操作都是通过 SQL 语句来实现的。所以在学习的过程中,要多编写 SQL 语句,对于同一个功能,使用不同的实现语句来完成,从而深刻理解其不同之处。
  3. 及时学习新知识。正确、有效地利用搜索引擎,可以搜索到很多关于 MySQL 的相关知识。同时,参考别人解决问题的思路,也可以吸取别人的经验,及时获取最新的技术资料。建议观看一手资料:官网。
  4. 多实践操作。数据库系统具有极强的操作性,需要多动手上机操作。在实际操作的过程中才能发现问题,并思考解决问题的方法和思路,只有这样才能提高实战的操作能力。

二、MySQL 介绍

2.1 百科定义

MySQL 是一个 关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的 关系型数据库管理系统 之一,在 WEB 应用方面,MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MySQL 的象征符号是一只名为 Sakila 的海豚,代表着 MySQL 数据库和团队的速度、能力、精确和优秀本质。

MySQL 所使用的 SQL 语言 是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

2.2 创始人简历

姓名:Michael Monty Widenius
生日:1962年3月3日
出生地:芬兰.赫尔辛基
职位:CTO、MySQL创始人

2.3 历史背景

1、1995年5月23日,MySQL 的第一个内部版本。
2、1996年10月,MySQL 3.11.1 发布,只能运行在 Sun Solaris 上。
3、1999-2000年,MySQL AB 公司在瑞典成立。
4、2003年12月,MySQL5.0 版本发布。
5、2008年1月,MySQL AB 公司被 Sun 公司以10亿美金收购。
6、2009年4月20日,Oracle公司以74亿美元收购Sun公司,同年,开启新分支,MariaDB 项目成立。

百科定义:MariaDB 由 MySQL 的创始人 Michael Widenius (英语: Michael Widenius) 主导开发,他早前曾以10亿美元的价格,将自己创建的公司 MySQL AB 卖给了 SUN,此后,随着 SUN 被甲骨文收购,MySQL 的所有权也落入 Oracle 的手中。

7、2013年6月18日,甲骨文公司修改MySQL授权协议,移除了GPL,将MySQL分为社区版和商业版。社区版依然可以免费使用,但是功能更全的商业版需要付费使用。
8、2018年4月,MySQL8.0.11 发布。

MySQL 从无到有,到技术的不断更新、版本的不断升级,经历了一个漫长的过程,这个过程是实践的过程,是 MySQL 成长的过程。时至今日,MySQL 的版本已经更新到了 MySQL 8.0。

2.4 MySQL 的优势

MySQL 是一款自由软件,任何人都可以从其官方网站下载。MySQL 是一个真正的多用户、多线程 SQL 数据库服务器。它采用 客户端/服务器 体系结构,由一个服务器守护程序 mysqld 和很多不同的客户程序及库组成。它能够快捷、有效和安全地处理大量的数据。相对于 Oracle 等数据库来说,MySQL 在使用时非常简单。MySQL 的主要目标是快捷、便捷和易用。MySQL 被广泛地应用在 Internet 上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源代码,成为多数中小型网站为了降低网站总体拥有成本而选择的网站数据库。

2.5 MySQL 版本

针对不同用户,MySQL 分为两个不同的版本:

  1. MySQL Community Server(社区版服务器): 该版本完全免费,但是官方不提供技术支持。专栏以社区版为例进行讲解
  2. MySQL Enterprise Server(企业版服务器): 能够以很高的性价比为企业提供数据仓库应用,支持 ACID 事物处理,提供完整的提交、回滚、崩溃恢复和行级锁定功能。但是该版本需付费使用,官方提供电话技术支持。

提示:MySQL Cluster 主要用于架设集群服务器,需要在社区版或企业版基础上使用。

MySQL版本的命名机制由3个数字和1个后缀组成,例如:MySQL-8.0.28 版本。

第1个数字(8)是主版本号,描述了文件格式,所有版本8的发行版都有相同的文件格式。
第2个数字(0)是发行级别,主版本号和发行级别组合在一起便构成了发行序列号。
第3个数字(28)是在此发行系列的版本号,随每次新分发版本递增。通常选择已经发行的最新版本。

在 MySQL 开发过程中,同时存在多个发布系列,每个发布处在软件成熟度的不同阶段:

  1. MySQL 8.0 是最新开发的稳定(GA)发布系列,是将执行新功能的系列,目前已经可以正常使用。专栏学习 MySQL 8.0 版本
  2. MySQL 5.7是比较稳定(GA)发布系列。只针对漏洞修复重新发布,没有增加会影响稳定性的新功能。

2.6 MySQL 特性

MySQL 是一个真正的多用户、多线程 SQL 数据库服务器。SQL(结构化查询语言) 是世界上最流行的和标准化的数据库语言。MySQL的特性如下:

  1. 使用 C 和 C++ 语言编写,并使用了多种编译器进行测试,保证源代码的可移植性。
  2. 支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows 等多种操作系统。跨平台
  3. 为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、php、Eiffel、Ruby 和 Tcl 等。
  4. 支持多线程,充分利用 CPU 资源。它能够快速、有效和安全的处理大量的数据。相对于 Oracle 等数据库来说,MySQL 的使用是非常简单的。MySQL 主要目标是快速、健壮和易用。
  5. 优化的 SQL 查询算法,有效地提高查询速度。
  6. 既能够作为一个单独的应用程序应用在客户端/服务器网络环境中,也能够作为一个库而嵌入其他软件中提供多语言支持,常见的编码,如中文的 GB2312、BIG5,日文的 Shift_JIS 等都可以用作数据表名和数据列名。
  7. 提供 TCP/IP、ODBC 和 JDBC 等多种数据库连接途径。
  8. 提供用于管理、检查、优化数据库操作的管理工具。
  9. 可以处理拥有上千万条记录的大型数据库。

目前,MySQL 的最新版本是 MySQL 8.0,它比上一个版本(MySQL 5.7) 具备更多新的特性。

1、性能: MySQL 8.0 的速度要比 MySQL 5.7 快2倍。MySQL 8.0 在以下方面带来了更好的性能,包括 读/写工作负载、I/O密集型工作负载,以及高竞争(hot spot—热点竞争问题)工作负载。 MySQL 8.0 性能与 MySQL 5.6、MySQL 5.7 对比如下图所示:

2、NoSQL:从 MySQL 5.7 开始,提供 NoSQL 存储功能,在 MySQL 8.0 中这部分功能得到了更大的改进。该功能消除了对独立的 NoSQL 文档数据库的需求,而 MySQL 文档存储也为 schema-less 模式的 JSON 文档提供了多文档事务支持和完整的 ACID 合规性。

3、窗口函数(Window Functions): 从 MySQL 8.0 开始,新增了窗口函数,可以用来实现若干新的查询方式。窗口函数与 SUM()、COUNT() 这种集合函数类似,但它不会将多行查询结果合并为一行,而是将结果放回多行当中,即窗口函数不需要 GROUP BY。

4、隐藏索引: 在 MySQL 8.0 中,索引可以被隐藏和显示。当索引将隐藏后,便不会被查询优化器所使用。可以将这个特性用于性能调试,例如先隐藏一个索引,然后观察其对数据库的影响。如果数据库性能有所下降,说明这个索引是有用的,然后将其恢复显示即可;如果数据库性能基本无变化,说明这个索引是多余的,可以考虑将其删除。

5、降序索引: MySQL 8.0 为索引提供按降序方式进行排序的支持,在这种索引中的值也会按降序的方式进行排序。

6、通用表表达式(Common Table Expressions,CTE): 在复杂的查询中使用嵌入式表时,使用 CTE 使得查询语句更清晰。

7、UTF-8 编码: 从 MySQL 8.0 开始,使用 utf8mb4 作为默认字符集。

8、JSON: MySQL 8.0 大幅改进了对 JSON 的支持,添加了基于路径查询参数从 JSON 字段中抽取数据的 JSON_EXTRACT() 函数,以及用于将数据分别组合到 JSON 数组和对象中的 JSON_ARRAYAGG() 和 JSON_OBJECTAGG() 聚合函数。

9、可靠性: InnoDB 现在支持表 DDL 的原子性,也就是 InnoDB 表上的 DDL 也可以实现事务完整性,要么失败回滚,要么成功提交,不至于出现部分成功的问题,此外还支持 crash-safe 特性,元数据存储在单个事务数据字典中。

10、高可用性(High Availability): InnoDB 集群为数据库提供集成的原生 HA 解决方案。

11、安全性: OpenSSL改进、新的默认身份验证、SQL角色、密码强度、授权。

MySQL 与其他大型数据库(如Oracle、DB2、SQL Server等)相比,确有不足之处,如规模小、功能有限等,但是这丝毫也没有减少它受欢迎的程度。对于个人使用者和中小型企业来说,MySQL 提供的功能已经绰绰有余,而且由于 MySQL 是开放源代码软件,因此可以大大降低总体拥有成本。此外,Python、Java 和 javascript 等编程语言都可以方便地连接并管理 MySQL 数据库。

2.7 MySQL 的应用环境

MySQL 是目前世界上最流行的开源关系数据库,大多应用于互联网行业。比如,在国内,大家所熟知的百度、腾讯、淘宝、京东、网易、新浪、抖音等,国外的 Google、Facebook、Twitter、GitHub 等都在使用 MySQL。社交、电商、游戏的核心存储往往也是 MySQL。

任何产品都不可能是万能的,也不可能适用于所有的应用场景。那么 MySQL 到底适用于哪些场景又不适用于哪些场景呢?

1、Web 网站系统。 Web 网站开发者是 MySQL 最大的客户群,也是 MySQL 发展史上最为重要的支撑力量。MySQL 之所以能成为 Web 网站开发者们最青睐的数据库管理系统,是因为 MySQL 数据库的安装配置都非常简单,使用过程中的维护也不像很多大型商业数据库管理系统那么复杂,而且性能出色。还有一个非常重要的原因就是 MySQL 是开放源代码的,完全可以免费使用。

2、日志记录系统。 MySQL 数据库的插入和查询性能都非常的高效,如果设计的好,在使用 MyISAM 存储引擎的时候,两者可以做到互不锁定,达到很高的并发性能。所以,对需要大量的插入和查询日志记录的系统来说,MySQL 是非常不错的选择。比如处理用户的登录日志,操作日志等,都是非常适合的应用场景。

3、数据仓库系统。 随着现在数据仓库数据量的飞速增长,我们需要的存储空间越来越大。数据量的不断增长,使数据的统计分析变得越来越低效,也越来越困难。下面是几个主要的解决思路。

  1. 采用昂贵的高性能主机以提高计算性能,用高端存储设备提高 I/O 性能,效果理想,但是成本非常高;
  2. 通过将数据复制到多台使用大容量硬盘的廉价 PC Server 上,以提高整体计算性能和 I/O 能力,效果尚可,存储空间有一定限制,成本低廉;
  3. 通过将数据水平拆分,使用多台廉价的 PC Server 和本地磁盘来存放数据,每台机器上面都只有所有数据的一部分,解决了数据量的问题,所有 PC Server 一起并行计算,也解决了计算能力问题,通过中间代理程序调配各台机器的运算任务,既可以解决计算性能问题又可以解决 I/O 性能问题,成本也很低廉。

在上面的三个方案中,第二和第三个的实现,MySQL 都有较大的优势。通过 MySQL 的简单复制功能,可以很好的将数据从一台主机复制到另外一台 ,不仅仅在局域网内可以复制,在广域网同样可以。当然,很多人可能会说,其他的数据库同样也可以做到,不是只有 MySQL 有这样的功能。确实,很多数据库同样能做到,但是 MySQL 是免费的,其他数据库大多都是按照主机数量或者 cpu 数量来收费,当我们使用大量的 PC Server 的时候,License 费用相当惊人。所以第一个方案,基本上所有数据库系统都能够实现,但是其高昂的成本不是每一个公司都能够承担的。

4、嵌入式系统。嵌入式环境对软件系统最大的限制是硬件资源非常有限,在嵌入式环境下运行的软件系统,必须是轻量级低消耗的软件。MySQL 在资源的使用方面的伸缩性非常大,可以在资源非常充裕的环境下运行,也可以在资源非常少的环境下正常运行。它对于嵌入式环境来说,是一种非常合适的数据库系统,而且 MySQL 有专门针对于嵌入式环境的版本。

MySQL 的定位是通用数据库,各种类型的应用一般都能利用到 MySQL 存取数据的优势。业内生产实践证明,MySQL 更适合中小型企业。以目前的软硬件产品水平来看,如果数据超过几个 TB 将难以高效利用 MySQL。MySQL 可以作为传统的关系型数据库产品使用,也可以当作一个 key-value 产品来使用。由于它具有优秀的灾难恢复功能,因此相对于目前市场上的一些 key-value 产品会更有优势。

2.8 数据库专业术语

在正式学习 MySQL 数据库前,我们有必要先了解一下数据库中的专业术语。下面汇总了一些在学习 MySQL 过程中会遇到的专业术语。

数据库管理系统(DBMS) 是位于操作系统与用户之间的一种操纵和管理数据库的软件。关系型数据库通过关系数据库管理系统(RDBMS)进行管理。

关系(Relational,即 RDBMS 里的 R) 表示这是一种特殊的 DBMS,数据库中表与表之间要存在关系。

数据库(DataBase,即 RDBMS 里的 DB) 是一个用来存储和管理数据的仓库。它的存储空间很大,并且有一定的数据存放规则。通过由行和列组成的二维表(类似 Excel 工作表)来管理数据。数据库中可以同时存储多个表。

管理系统(Management System,即 RDBMS 里的 MS) 是一个软件,我们可以通过它来插入(insert)、查询(query)、修改(modify)或删除(delete)表中的数据。

用来管理数据的二维表在关系数据库中简称为 表(Table),每个表由多个 行(Row)和列(Column) 组成。

表的列(垂直方向)称为字段,是具有相同数据类型的数据集合。表的行(水平方向)称为记录(Record),相当于一条数据。记录可以包含多项信息,表中的每一列都对应于其中的某一项。下图是一个统计学生信息的 student 表。可以看到,每个列都包含了所有学生的某个信息,比如 name(姓名)。而每行则包含了某个学生的所有信息,即 id(编号)、name(姓名)、 age (年龄)、stuno(学号)等。

SQL(Structured Query Language,结构化查询语言) 是用来操作关系型数据库的语言,使用 SQL 可以对数据库和表进行添加、删除、修改和查询等操作。

2.9 MySQL 客户端和服务器架构(C/S架构)

客户端-服务器(Client/Server)结构简称 C/S 结构, 是一种网络架构,通常在该网络架构下的软件分为客户端和服务器。服务器是整个应用系统资源的存储和管理中心,多个客户端分别各自处理相应的功能,共同实现完整的应用。在客户/服务器结构中,客户端用户的请求被传送到数据库服务器,数据库服务器进行处理后,将结果返回给用户,从而减少网络数据的传输量。

用户在使用应用程序时,首先启动客户端,然后通过相关命令告知服务器进行连接以完成各种操作,而服务器则按照此请示提供相应的服务。每一个客户端软件的实例都可以向一个服务器或应用程序服务器发出请求。客户端和服务器程序通常不在同一台计算机上运行,比如,我们平时在当当网上买书的时候,所使用的电脑和网页浏览器就被当做了一个客户端,同时,组成当当网的电脑、数据库和应用程序就被当做服务器。

数据库管理系统可分为两类:一类是基于 共享文件系统 的数据库管理系统,例如 Microsoft Access 和 FileMaker,主要用于桌面用途,不适合用于高端或更关键的应用;另一类是基于 客户端-服务器 的数据库管理系统,例如 MySQL、Oracle 和 SQL Server 等数据库。

服务器软件负责访问和处理所有数据的一个软件,这个软件运行在称为数据库服务器的计算机上,并且与数据文件打交道的只有服务器软件。关于数据的添加、删除和更新等所有的请求都由服务器完成。这些请求来自于运行客户端的计算机。客户端用来和用户打交道。例如,如果你请求一个按字母顺序列出的产品表,则客户端会通过网络提交该请求给服务器,服务器处理这个请求,然后根据需要对数据进行过滤、丢弃和排序,最后把结果返回到客户端。

注意:客户端和服务器可以安装在两台计算机或一台计算机上,不管它们在不在相同的计算机上,客户端都要与服务器进行通信。以上这些过程对用户都是透明的,你不需要直接访问数据文件。为了使用 MySQL,你需要访问运行 MySQL 服务器的计算机和发布命令到 MySQL 客户端的计算机。

对于 MySQL 数据库管理系统,服务器为MySQL DBMS。你可以在本地安装的副本上运行,也可以连接到运行在你具有访问权的远程服务器上的一个副本。客户端可以是 MySQL 提供的工具(如 MySQL Workbench、SQLyog、DataGrip、Navicat)、脚本语言(如Perl)、Web 应用开发语言(如ASP、ColdFusion、JSP 和 PHP)和程序设计语言(如 C、C++、Java、Python)等。

2.10 MySQL 内部结构

麻雀虽小,五脏俱全。MySQL 虽然以简单著称,但其内部结构并不简单,本小节主要介绍 MySQL 的整体架构组成。学习 MySQL 就好比盖房子,如果想把房子盖的特别高,地基一定要稳,基础一定要牢固。学习 MySQL 数据库前要先了解它的内部结构,这是学好 MySQL 数据库的前提。

MySQL 由连接池、SQL 接口、解析器、优化器、缓存、存储引擎等组成,可以分为三层,即 MySQL Server 层、存储引擎层和文件系统层。MySQL Server 层又包括连接层和 SQL 层。如下是官方文档中 MySQL 的基础架构图:

上图中,Connection pool 为连接层,Management Services & Utilities …Caches & Buffers 为 SQL 层,Pluggable Storage Engines 为存储引擎层,File system、Files & Logs 为文件系统层。

Co​nnectors 不属于以上任何一层,可以将 Co​nnectors 理解为各种客户端、应用服务,主要指的是不同语言与 SQL 的交互。

1、连接层。 应用程序通过接口(如 ODBC、JDBC)来连接 MySQL,最先连接处理的是连接层。连接层包括通信协议、线程处理、用户名密码认证 3 部分。

  1. 通信协议负责检测客户端版本是否兼容 MySQL 服务端。
  2. 线程处理是指每一个连接请求都会分配一个对应的线程,相当于一条 SQL 对应一个线程,一个线程对应一个逻辑 CPU,在多个逻辑 CPU 之间进行切换。
  3. 密码认证用来验证用户创建的账号、密码,以及 host 主机授权是否可以连接到 MySQL 服务器。

Connection Pool(连接池)属于连接层。由于每次建立连接都需要消耗很多时间,连接池的作用就是将用户连接、用户名、密码、权限校验、线程处理等需要缓存的需求缓存下来,下次可以直接用已经建立好的连接,提升服务器性能。

2、SQL层。 SQL 层是 MySQL 的核心,MySQL 的核心服务都是在这层实现的。主要包含权限判断、查询缓存、解析器、预处理、查询优化器、缓存和执行计划。

  1. 权限判断可以审核用户有没有访问某个库、某个表,或者表里某行数据的权限。
  2. 查询缓存通过 Query Cache 进行操作,如果数据在 Query Cache 中,则直接返回结果给客户端,不必再进行查询解析、优化和执行等过程。
  3. 查询解析器针对 SQL 语句进行解析,判断语法是否正确。
  4. 预处理器对解析器无法解析的语义进行处理。
  5. 查询优化器对 SQL 进行改写和相应的优化,并生成最优的执行计划,就可以调用程序的 API 接口,通过存储引擎层访问数据。

Management Services & Utilities、SQL Interface、Parser、Optimizer 和 Caches & Buffers 属于 SQL 层,详细说明如下表所示:

名称说明
Management Services & UtilitiesMySQL 的系统管理和控制工具,包括备份恢复、MySQL 复制、集群等。
SQL Interface(SQL 接口)用来接收用户的 SQL 命令,返回用户需要查询的结果。例如 SELECT FROM 就是调用 SQL Interface。
Parser(查询解析器)在 SQL 命令传递到解析器的时候会被解析器验证和解析,以便 MySQL 优化器可以识别的数据结构或返回 SQL 语句的错误。
Optimizer(查询优化器)SQL 语句在查询之前会使用查询优化器对查询进行优化,同时验证用户是否有权限进行查询,缓存中是否有可用的最新数据。它使用“选取-投影-连接”策略进行查询。 例如 SELECT id, name FROM student WHERE gender = "女";语句中,SELECT 查询先根据 WHERE 语句进行选取,而不是将表全部查询出来以后再进行 gender 过滤。SELECT 查询先根据 id 和 name 进行属性投影,而不是将属性全部取出以后再进行过滤,将这两个查询条件连接起来生成最终查询结果。
Caches & Buffers(查询缓存)如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的,比如表缓存、记录缓存、key 缓存、权限缓存等。

3、存储引擎层。 Pluggable Storage Engines 属于存储引擎层。存储引擎层是 MySQL 数据库区别于其他数据库最核心的一点,也是 MySQL 最具特色的一个地方。主要负责 MySQL 中数据的存储和提取。因为在关系数据库中,数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。

4、文件系统层。 文件系统层主要是将数据库的数据存储在操作系统的文件系统之上,并完成与存储引擎的交互。

说明:学习阅读完本节内容,了解 MySQL 体系结构即可,教程后面会详细介绍每个模块。

三、MySQL 服务器的安装和配置

MySQL 是目前非常流行的开放源代码的数据库,是完全网络化的跨平台的关系型数据库系统。任何人都能从 Internet 上下载 MySQL 的社区版本,而无须支付任何费用,并且开放源代码意味着任何人都可以使用和修改该软件,如果愿意,用户可以研究源代码并进行恰当的修改,以满足自己的需求,不过需要注意的是,这种 自由 是有范围的。

3.1 Windows 平台下载安装配置 MySQL8.0

3.1.1 MySQL 服务器安装包下载

MySQL 服务器的安装包可以到 https://www.mysql.com/downloads/ 中下载。下载的具体步骤如下:

1、 在浏览器的地址栏中输入 URL 地址 https://www.mysql.com/downloads/,进入 MySQL下载页面,如下图所示:

2、 向下滚动鼠标,找到并单击 MySQL Community (GPL) Downloads » 超链接,进入 MySQL Community Downloads 页面,如下图所示:


3、 单击 MySQL Community Server 超链接,进入 Download MySQL Community Server 页面,找到下图所示的位置:

4、 根据自己的操作系统来选择合适的安装文件,这里以针对 Windows 32 位操作系统的完整版 MySQL Server 为例进行介绍,单击上图中所示的 MySQL Installer for Windows 图片,进入 Download MySQL Installer 页面,在该页面中,找到下图所示的位置:

5、 单击 Download 按钮,进入下图所示的 Begin Your Download 页面:

6、 单击 No thanks, just start my download. 超链接,即可看到安装文件的下载信息,如下图所示:

3.1.2 MySQL 服务器安装

下载完成以后,将得到一个名为 mysql-installer-community-8.0.31.0.msi 的安装文件,双击该文件可以进行 MySQL 服务器的安装,具体的安装步骤如下:

1、 双击 mysql-installer-community-8.0.31.0.msi 文件,打开安装向导对话框。弹出如下图所示的一些对话框:



2、 将出现 Choosing a Setup Type 界面,选中 Developer Default,安装全部产品,如下图所示:

3、 单击 Next 按钮,将打开 Check Requirements 界面,在该界面中检查系统是否具备所必需的插件,如下图所示:

4、 单击 Execute 按钮,等待安装完成,安装过程中可能会弹出一些新的对话框,接受安装即可,如下图所示:

单击 Execute 按钮之后,将开始安装,并显示安装进度。安装完成后,将显示如下图所示的界面:

5、 单击 Next 按钮,将打开如下图所示的对话框,单击 Yes 按钮,将在线安装所需插件:

安装完成后,将显示下图所示的界面:

6、 单击 Execute 按钮,将开始安装,并显示安装进度。安装完成后,将显示如下图所示的界面:

7、 单击 Next 按钮,将打开如下图所示的 Product Configuration 界面,对数据库进行配置:

8、 单击 Next 按钮,将打开 Type and Networking 界面,可以在其中设置服务器类型以及网络连接选项,最重要的是设置端口,这里保持默认的 3306 端口,如下图所示:

单击 Next 按钮,将打开如下图所示的 Authentication Method 界面:

9、 单击 Next 按钮,将打开 Accounts and Roles 界面,可以设置 root 用户的登录密码,也可以添加新用户,这里只设置 root 用户的登录密码为 root,其他采用默认设置,如下图所示:

10、 单击 Next 按钮,将打开 Windows Service 界面,开始配置 MySQL 服务器,这里采用默认设置,如下图所示:

11、 单击 Next 按钮,将显示如下图所示的 Server File Permissions 界面。

12、 单击 Next 按钮,进入 Apply Configuration(应用配置) 界面,如下图所示:

单击 Execute 按钮,进行应用配置,配置完成后如下图所示:

13、 单击 Finish 按钮,安装程序又回到了之前的 Product Configuration 界面,此时出现 MySQL Server 安装成功的提示:

14、 单击 Next 按钮,打开如下图所示的 MySQL Router Configuration 界面,可以在其中配置路由。

15、 单击 Finish 按钮,安装程序又回到了之前的 Product Configuration 界面:

16、 单击 Next 按钮,打开 Connect To Server 界面,输入数据库用户名 root,密码 root,单击 Check 按钮,进行 MySQL 连接测试,如下图所示,可以看到数据库测试连接成功:

17、 单击 Next 按钮,进入下图所示的 Apply Configuration 界面,单击 Execute 按钮进行配置,此过程需等待几分钟。

18、 运行完毕后,出现如下图所示界面:

单击 Finish 按钮,打开如下图所示界面:

单击 Next 按钮,出现如下界面,在点击 Finish 按钮,至此安装完毕。

安装完毕之后,会弹出 MySQL Shell 及 MySQL Workbench 8.0 CE,关闭掉即可。

3.1.3 启动、连接、断开和停止 MySQL 服务器

通过系统服务器和 命令提示符(DOS) 都可以启动、连接和关闭MySQL,操作非常简单。下面以 Windows10 操作系统为例,讲解其具体的操作流程。通常情况下不要停止 MySQL 服务器,否则数据库将无法使用。

1、启动和停止MySQL服务器。 启动和停止 MySQL 服务器的方法有两种:系统服务和命令提示符。

通过系统服务启动、停止 MySQL 服务器。如果 MySQL 设置为 Windows 服务,快捷键 Win + R,输入 services.msc,如下图所示:

输入完成之后,单击确定按钮,如下图所示:

在服务器的列表中找到 MySQL 服务并右击,在弹出的快捷菜单中完成 MySQL 服务的各种操作(启动、重新启动、停止、暂停和恢复),如下图所示:(可以通过输入 M 字母快速定位 M 开头的服务)

2、在命令提示符下启动、停止MySQL服务器。

按下快捷键 Win + R,在出现的文本输入框中输入 cmd 命令,然后以管理员身份运行:


在命令提示符下输入 net stop mysql,此时再按 Enter 键,即可停止 MySQL 服务器。

在命令提示符下输入:net start mysql,此时再按 Enter 键,即可启用 MySQL 服务器。

3.1.4 配置环境变量

为了后续方便使用 mysql 命令,故设置环境变量。下面介绍这个环境变量的设置方法,其步骤如下:

① 右击 计算机 图标,在弹出的快捷菜单中选择 属性 命令,在弹出的对话框中选择 高级系统设置,弹出 系统属性 对话框,如下图所示:

②在 系统属性 对话框中,选择 高级 选项卡,单击 环境变量 按钮,弹出 环境变量 对话框,如下图所示:

③在 环境变量 对话框中,定位到 系统变量 中的 Path 选项,单击 编辑 按钮,弹出 编辑系统变量 对话框,如下图所示:

④在 编辑系统变量 对话框中,将 MySQL 服务器的 bin 文件夹位置 (C:\\Program Files\\MySQL\\MySQL Server 8.0\\bin) 添加到 变量值 文本框中。最后,单击 确定 按钮。然后之前弹出的对话框,一直点击确定即可。

环境变量设置完成后,再使用 mysql 命令就非常方便了。

3.1.4 连接和断开 MySQL 服务器

下面分别介绍连接和断开 MySQL 服务器的方法。

1、连接MySQL服务器。 连接 MySQL 服务器通过 mysql 命令实现。在 MySQL 服务器启动后,按照上面介绍的方法进入 DOS 窗口,在命令提示符下输入:

输入完命令语句后,按 Enter 键即可连接 MySQL 服务器,如下图所示:

注意:在连接 MySQL 服务器时,MySQL 服务器所在地址(如 –h127.0.0.1)可以省略不写。为了保护 MySQL 数据库的密码,可以采用上图所示的加密密码输入方式。如果密码在 -p 后直接给出,那么密码就以明文显示,例如:mysql –u root –h127.0.0.1 –p root

2、断开MySQL服务器。 连接到 MySQL 服务器后,可以通过在 MySQL 提示符下输入 exit 或者 quit 命令断开 MySQL 连接,格式:exit; 或者 quit;

3.2 Windows 平台下载安装配置 Mariadb

1、 双击下载后的软件安装包 mariadb-10.5.9-winx64.msi ,如下图所示:

2、 单击 Next 按钮,勾选 I accept the terms in the License Agreement 前的单选框,单击 Next 按钮,如下图所示:

3、 继续 Next 按钮,如下图所示:

4、 设置密码,并勾选两个单选框,单击 Next 按钮,如下图所示:

5、 更改默认端口,单击 Next 按钮,如下图所示:

6、 单击 Install 按钮进行安装,如下图所示:



7、 单击 Finish 按钮完成安装,如下图所示:

3.3 Windows 平台下载安装 xampp(建议使用该种方式)

下载:https://www.apachefriends.org/zh_cn/download.html
双击下载好的 xampp-windows-x64-8.2.0-0-VS16-installer.exe 文件,弹出验证,选择 ,如下图所示:

弹出警告,单击确定即可,如下图所示:

单击 Next 按钮,如下图所示:

单击 Next 按钮,如下图所示:

设置安装路径,安装到自己比较熟悉的位置,前面的警告建议不要安装到 C:\\Program Files 目录下,安装目录设置好之后单击 Next 按钮,如下图所示:

设置语言,单击 Next 按钮,如下图所示:




单击 Finish 完成安装,如下图所示:

按键盘上的 Win 键,找到 XAMPP 文件夹,单击 XAMPP Control Panel,如下图所示:

注意:Start 之前先要停掉本地的单独安装的 MySQL 及 Mariadb 服务,否则端口冲突会报错。如下图所示:

在服务中关闭上述所说的 MySQL 及 Mariadb 服务之后,Start 之后成功启动,如下图所示:


3.4 Linux 下安装 mysql及 mariadb(简单安装: RPM 包安装 MySQL)

CentOS 安装光盘
项目官方:https://downloads.mariadb.org/mariadb/repositories/
国内镜像:https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/ https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/
CentOS 8:安装光盘直接提供 mysql-server:8.0、mariadb-server : 10.3.28
CentOS 7:安装光盘直接提供 mariadb-server:5.5.68 服务器包、mariadb 客户端工具包
CentOS 6:mysql-server:5.1 服务器包 mysql 客户端工具包

3.4.1 Centos7 安装 mariadb

yum info mariadb-server 如下图所示:

安装:yum install -y mariadb-server
启动服务:systemctl enable --now mariadb,如下图所示:

yum 安装之后直接使用 mysql 即可登录,省略了密码,如下图所示:

针对 MySQL5.6 前版本进行安全加固,执行脚本:mysql_secure_installation,主要目的:

设置数据库管理员root口令
禁止root远程登录
删除anonymous用户帐号
删除test数据库

如下图所示:

3.4.2 CentOS 7 利用 yum 源安装 MySQL5.7

1、添加源:

tee /etc/yum.repos.d/mysql.repo <<EOF
[mysql]
name=mysql5.7
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
gpgcheck=0
EOF

2、安装: yum -y install mysql-community-server
3、启动服务: systemctl enable --now mysqld
4、查看端口:

5、登录:

[23:33:52 root@centos7 ~]#mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[23:34:57 root@centos7 ~]#grep password /var/log/mysqld.log
2022-12-30T15:33:18.222669Z 1 [Note] A temporary password is generated for root@localhost: eL(ytwoft0mu
2022-12-30T15:34:57.207047Z 2 [Note] Access denied for user 'root'@'localhost' (using password: NO)
[23:35:11 root@centos7 ~]#mysql -uroot -p'eL(ytwoft0mu'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \\g.
Your MySQL connection id is 3
Server version: 5.7.40

Copyright (c) 2000, 2022, 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> status
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
#修改简单密码不符合密码策略
mysql> alter user root@'localhost' identified by 'amoxiang2021';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
#修改为复杂密码
mysql> alter user root@'localhost' identified by 'AmoXiang123456@';
Query OK, 0 rows affected (0.00 sec)

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.40, for Linux (x86_64) using  EditLine wrapper

Connection id:		3
Current database:	
Current user:		root@localhost
SSL:			Not in use
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server version:		5.7.40
Protocol version:	10
Connection:		Localhost via UNIX socket
Server characterset:	latin1
Db     characterset:	latin1
Client characterset:	utf8
Conn.  characterset:	utf8
UNIX socket:		/var/lib/mysql/mysql.sock
Uptime:			3 min 21 sec

Threads: 1  Questions: 8  Slow queries: 0  Opens: 107  Flush tables: 1  Open tables: 100  Queries per second avg: 0.039
--------------

mysql> exit;
Bye

3.4.3 CentOS 7 利用 yum 源安装 Mariadb(高版本)

https://mariadb.org/download/?t=mariadb&p=mariadb&r=11.0.0
参考网站信息,配置 yum 源,如下图所示:

添加源:

tee /etc/yum.repos.d/MariaDB.repo <<EOF
[mariadb]
name = MariaDB
baseurl = https://mirrors.neusoft.edu.cn/mariadb/yum/10.8/centos7-amd64
gpgkey=https://mirrors.neusoft.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

安装及登录步骤如下:

sudo yum -y install MariaDB-server MariaDB-client
systemctl enable --now mariadb.service
ss -ntl
[root@localhost ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \\g.
Your MariaDB connection id is 3
Server version: 10.8.6-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.

MariaDB [(none)]> status
--------------
mysql  Ver 15.1 Distrib 10.8.6-MariaDB, for Linux (x86_64) using readline 5.1

Connection id:		3
Current database:	
Current user:		root@localhost
SSL:			Not in use
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server:			MariaDB
Server version:		10.8.6-MariaDB MariaDB Server
Protocol version:	10
Connection:		Localhost via UNIX socket
Server characterset:	latin1
Db     characterset:	latin1
Client characterset:	utf8mb3
Conn.  characterset:	utf8mb3
UNIX socket:		/var/lib/mysql/mysql.sock
Uptime:			1 min 7 sec

Threads: 1  Questions: 4  Slow queries: 0  Opens: 17  Open tables: 10  Queries per second avg: 0.059
--------------

MariaDB [(none)]> 
#针对 10.5.2 之后版本安全加固
[root@localhost ~]# mariadb-secure-installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n<

以上是关于二MySQL 介绍及 MySQL 安装与配置的主要内容,如果未能解决你的问题,请参考以下文章

练习题目及答案)

练习题目及答案)

十MySQL 聚合函数分组查询及过滤分组

十MySQL 聚合函数分组查询及过滤分组

十一子查询详解

十一子查询详解