MySQL 数据库安装、基础到MySQL架构与存储引擎

 更新时间:2026年08月30日 10:10:09   作者:Sunday不上发条  
本文介绍了MySQL的基础知识,包括数据库、服务器与表的基本概念,重点讲解了MySQL 的安装,感兴趣的朋友跟随小编一起看看吧

1 ~> 什么是数据库?

数据库(Database,DB)是按照一定结构组织、存储和管理数据的电子仓库
为什么需要数据库呢?

比如你在做一个网站,需要保存用户信息:

id用户名密码年龄
1张三******20
2李四******22
3王五******21

这些数据如果只保存在一个普通文件中,一旦数据量变得比较大时,想要查询、修改和管理就变得非常困难了。所以,引入了数据库来管理。

数据库存储介质:

  • 磁盘
  • 内存

主流数据库:

  • SQL Server:微软的产品,.NET 程序员的最爱,中大型项目。
  • Oracle Database:甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如 MySQL。
  • MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商、SNS、论坛。
  • PostgreSQL:加州大学伯克利分校计算机系开发的关系型数据库,不管是私用、商用,还是学术研究使用,可以免费使用、修改和分发。
  • SQLite:是一款轻型的数据库,是遵守 ACID 的关系型数据库管理系统,它包含在一个相对小的 C 库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
  • H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。

2 ~> MySQL 在 CentOS 7 环境安装

说明:我们直接在 root 权限下操作!

步骤一:卸载不需要的环境

有些系统可能自带 MySQLMariaDB(MySQL 的开源分支、完全兼容 MySQL,绝大多数语法、API、配置几乎一模一样),我们需要先将它们卸载。
检查是否存在 MySQL / MariaDB:

ps axj | grep maridb
ps axj | grep mysql

我的系统下载了 MySQL,所以可以看到,但是不存在 MariaDB。
如果存在,还需要关掉服务:

systemctl stop maridb.service
systemctl stop mysql.service

步骤二:卸载默认安装包

查看有哪些安装包:

rpm -qa | grep maridb
rpm -qa | grep mysql

卸载安装包:

// 方案一:一次性全部卸载
yum remove mysql-community* -y
// 方案二:一个一个卸载
yum remove mysql-community-common-5.7.44.1.el7.x86_64
yum remove mysql-community-client-5.7.44.1.el7.x86_64
...

步骤三:获取MySQL官方yum源

获取mysql官方yum源:

http://repo.mysql.com/
点击链接进入官网,然后右击鼠标点击“查看网页源代码”。

例如:mysql57-community-release-el7-8.noarch.rpm

  • mysql57:代表 MySQL 5.7 版本
  • community:社区版
  • release:这是一个yum 源 rpm 包
  • el7Enterprise Linux 7,对应 CentOS7/RHEL7

我的云服务器为Centos 7.8所以我选择mysql57-community-release-el7-8.noarch.rpm,点击之后就会自动下载。

# 查看自己的系统版本
cat /etc/redhat-release

安装包如下图所示:

然后将安装包上传到云服务器:

// 从系统文件选择上传到云服务器
rz

步骤四:安装yum 源

# 安装
rpm -Uvh mysql57-community-release-el7-8.noarch.rpm
# 查看有没有安装成功
ls /etc/yum.repos.d/ -al

步骤五:安装MySQL 服务

# 安装服务
yum install -y mysql-community-server

可能遇到下面的问题:

# 安装遇到密钥过期的问题:
Failing package is: mysql-community-client-5.7.39-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
# 解决方案:执行下面的命令
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

步骤六:查看配置文件和数据存储位置

# 配置文件
ls /etc/my.cnf
# 数据库文件
ls /var/lib/mysql

步骤七:启动服务并查看

# 启动MySQL 服务端
systemctl start mysql.service
# 或者
systemctl start mysqld
# 查看
ps axj | grep mysqld

# 关闭mysql 服务端
systemctl stop mysqld

步骤八:登录 MySQL

刚开始我们并不知道密码,所以,先配置为免密码登录。

# 打开配置文件
vim /etc/my.cnf
# 在最后面添加:
skip-grant-tables
# 保存退出即可
shift + ; + wq

然后登录:

# 登录:
# -u 指定身份
# -p 指定密码
mysql -u root -p

由于我们设置了免密码登录,所以直接回车就登录进去了。

想要退出:直接输入quit即可!

步骤九:简单配置

MySQL 本质是一个基于客户端-服务端模式的网络服务

  • MySQL 服务监听的 TCP 端口,默认 3306
  • 客户端连接数据库就访问这个端口;可以修改为别的端口,改完要重启 mysqld 服务生效。

注意:改端口之后,连接时需要加 -P端口号,例如 mysql -uroot -p -P3307

将MySQL 服务端的字符集配置为:utf8

将存储引擎配置为:默认使用 InnoDB 存储引擎。

# 打开配置文件
vim /etc/my.cnf
# 插入选项
port=3306
character-set-server=utf8
default-storage-engine=innodb
# 保存退出
shift + ; + wq

重启 MySQL 服务后生效。

# 重启
systemctl restart mysqld

3 ~> MySQL 基础

3.1 服务器,数据库,表关系

所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。

为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。

数据库服务器、数据库和表的关系如下:

3.2 MySQL 基本使用

3.2.1 启动 MySQL 服务端

systemctl start mysqld

3.2.2 连接 MySQL 服务器

mysql -u root -p -h 127.0.0.1 -P 3306

注意:

  • 如果没有写 -h 127.0.0.1,默认是连接本地。
  • 如果没有写 -P 3306,默认是连接 3306 端口号。

netstat -nltp 查看网络服务:

3.2.3 使用案例

  • 查看当前创建的数据库
show databases;

数据库就是 /var/lib/mysql 路径下的目录文件。

注意:命令后面需要加“;”。

  • 创建数据库
create database test;

  • 创建数据库表

在创建表之前,要在哪个数据库建表,就要先使用该数据库:

# 使用数据库
use db_name
# 建表
create table student(
	id int,
	name varchar(32),
	gender varchar(2)
	);
  • 表中插入数据
# 全列插入
insert into student (id, name, gender) values(1, '张三', '男');
insert into student (id, name, gender) values(2, '李四', '女');
insert into student (id, name, gender) values(3, '王五', '男');
# 全列插入写法二:
insert into student values(1, '张三', '男');
insert into student values(2, '李四', '女');
insert into student values(3, '王五', '男');
  • 查询表中数据
select * from student;

  • 删除数据库(不推荐)
drop database db_name;

3.3 MySQL 架构

MySQL 本质是基于 C/S 模式的网络服务。

  • mysql:是客户端
  • mysqld:是服务端,所以启动服务是 systemctl start mysqld

3.3.1 MySQL 的客户端

MySQL Client 是用来和 MySQL Server 进行交互的程序。

例如我们在 Linux 终端输入:

mysql -u root -p

这里启动的 mysql 就是一个客户端程序

它可以:

  • 连接 MySQL Server
  • 向 MySQL Server 发送 SQL
  • 接收 Server 返回的数据
  • 把结果显示在终端上

3.3.2 MySQL 的服务端

MySQL Server 是真正负责管理和操作数据库的程序。

它主要负责:

  • 保存数据库和表中的数据
  • 接收客户端发送的 SQL
  • 解析和执行 SQL
  • 查询,修改数据
  • 管理用户权限
  • 返回 SQL 执行结果

例如我们执行:

select * from student;

这条 SQL 是发送给 MySQL Server 执行的。

MySQL 的架构就是围绕 MySQL Server 来构建的。

(1)连接与管理层

职责:负责“接客与安全校验”。处理客户端连接、管理线程池,并校验用户的账号、密码与访问权限。

(2)服务层(Server 层)

职责:负责“思考与调度”。包含解析器和优化器,主要将 SQL 文本解析为语法树,计算出最优执行计划,并向底层发送读写指令(这一层与具体数据库引擎无关)。

(3)可插拔存储引擎层

职责:负责“真正的读写干活”。作为插件可按需切换,不同引擎实现不同的存储机制,如 InnoDB(支持事务和行锁)或 MyISAM(不支持事务但简单轻量)。

(4)物理文件存储层

职责:负责“持久化落盘”。将数据表、索引以及各类日志(Redo Log、Binlog 等)真正保存在操作系统的磁盘或网络存储中。

3.4 SQL 分类

SQL 就是 MySQL 的命令。按照功能的不同,SQL 主要分为以下四类:

分类全称作用说明代表指令典型示例
DDLData Definition Language(数据定义语言)用来维护存储数据的结构,如创建、删除、修改数据库和表createdropaltercreate database test;drop table student;alter table student add column age int;
DMLData Manipulation Language(数据操纵语言)用来对表中的数据进行增、删、改操作insertdeleteupdateinsert into student values(1, '张三', '男');delete from student where id = 1;update student set name = '李四' where id = 2;
DQLData Query Language(数据查询语言)用来查询表中的数据,是 DML 中单独划分出来的一类selectselect * from student where id = 10;
DCLData Control Language(数据控制语言)主要负责权限管理和事务控制grantrevokecommitgrant all on *.* to 'root'@'localhost';revoke all on *.* from 'root'@'localhost';commit;

说明:DQL 本质上是 DML 的一部分,但由于 select 查询使用频率极高,通常单独列为一类,方便学习和记忆。

4 ~> 存储引擎

4.1 什么是存储引擎?

MySQL 存储引擎,可以理解为负责“怎么存储和读取表中数据”的组件。

MySQL Server 负责接收和处理 SQL,但具体把数据写到磁盘、怎么读取、怎么建立索引、怎么支持事务,主要由存储引擎负责。

例如执行:

select * from student where id = 10;

MySQL Server 的 SQL 层会负责解析、优化和执行这个 SQL。

真正需要从数据中找到 id = 10 的数据时,就会交给存储引擎。

  • 查看存储引擎:
show engines;

4.2 常见的存储引擎

MySQL 的核心就是插件式存储引擎,支持多种存储引擎

现在 MySQL 默认的存储引擎就是 InnoDB

还有:

  • MyISAM
  • MEMORY
  • CSV
  • Archive

InnoDB 负责的事情:

  • 数据存储
  • 索引
  • 事务
  • MVCC
  • Buffer Pool
  • 崩溃恢复
  • Redo Log等

一个直观的比喻:将 MySQL 想象成图书馆

MySQL Server = 图书馆
       │
       ├── SQL解析器 = 接待员
       │
       ├── 优化器 = 查找路线规划员
       │
       ├── 执行器 = 执行工作人员
       │
       └── 存储引擎 = 图书仓库管理系统

5 ~> 总结

本文介绍了 MySQL 的基础知识,包括数据库、服务器与表的基本概念。

重点讲解了 MySQL 的安装!

并初步了解了 MySQL 的基本使用以及 MySQL 的客户端、服务端架构以及 SQL 分类。

最后介绍了存储引擎的基本概念,为后续学习 InnoDB、索引、事务等 MySQL 核心知识打下基础。

到此这篇关于MySQL 数据库安装、基础到MySQL架构与存储引擎的文章就介绍到这了,更多相关mysql数据库安装内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL详细汇总常用函数

    MySQL详细汇总常用函数

    MySQL数据库中提供了很丰富的函数。MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数,可以简化用户的操作。本期将带你总结常用函数都有哪些
    2021-11-11
  • 浅谈mysql密码遗忘和登陆报错的问题

    浅谈mysql密码遗忘和登陆报错的问题

    下面小编就为大家带来一篇浅谈mysql密码遗忘和登陆报错的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • mysql临时表插入数据方式

    mysql临时表插入数据方式

    这篇文章主要介绍了mysql临时表插入数据方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • MySQL中的binlog相关命令和恢复技巧

    MySQL中的binlog相关命令和恢复技巧

    这篇文章主要介绍了MySQL中的binlog相关命令和恢复技巧,需要的朋友可以参考下
    2014-05-05
  • Mysql连接数的基本知识讲解

    Mysql连接数的基本知识讲解

    这篇文章主要介绍了Mysql连接数的基本知识,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09
  • Mysql8中的无插件方式审计

    Mysql8中的无插件方式审计

    这篇文章主要介绍了Mysql8中的无插件方式审计,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • SQL常见函数整理之Format将日期、时间和数字值格式化

    SQL常见函数整理之Format将日期、时间和数字值格式化

    最近项目总是写sql查询时间,数据库存的时间有各种格式,下面这篇文章主要给大家介绍了关于SQL常见函数整理之Format将日期、时间和数字值格式化的相关资料,需要的朋友可以参考下
    2024-01-01
  • MySQL注入绕开过滤的技巧总结

    MySQL注入绕开过滤的技巧总结

    这篇文章主要介绍了关于MySQL注入时绕开过滤的技巧,文中通过图文与示例代码介绍的很详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02
  • Mysql的root账户密码忘记了怎么解决(百分百教会你重置!)

    Mysql的root账户密码忘记了怎么解决(百分百教会你重置!)

    mysql是常用的数据库,很多程序员在使用的过程中会出现root用户密码忘记的事情,这篇文章主要给大家介绍了关于Mysql的root账户密码忘记了该怎么解决的相关资料,文中介绍的方法百分百教会你如何重置,需要的朋友可以参考下
    2024-05-05
  • Mysql数据库命令大全

    Mysql数据库命令大全

    mysql命令大家经常会用到,但是很少有朋友整理吧,最近项目不多,抽个时间把mysql数据库命令总结给大家,需要的朋友可以参考下
    2015-09-09

最新评论