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

发布时间:2026/8/26 15:01:03
MySQL 基础入门:从 MySQL 数据库安装、基础到MySQL架构与存储引擎 目录1 ~ 什么是数据库2 ~ MySQL 在 CentOS 7 环境安装3 ~ MySQL 基础3.1 服务器数据库表关系3.2 MySQL 基本使用3.2.1 启动 MySQL 服务端3.2.2 连接 MySQL 服务器3.2.3 使用案例3.3 MySQL 架构3.3.1 MySQL 的客户端3.3.2 MySQL 的服务端3.4 SQL 分类4 ~ 存储引擎4.1 什么是存储引擎4.2 常见的存储引擎5 ~ 总结1 ~ 什么是数据库数据库DatabaseDB是按照一定结构组织、存储和管理数据的电子仓库。为什么需要数据库呢比如你在做一个网站需要保存用户信息id用户名密码年龄1张三******202李四******223王五******21这些数据如果只保存在一个普通文件中一旦数据量变得比较大时想要查询、修改和管理就变得非常困难了。所以引入了数据库来管理。数据库存储介质磁盘内存主流数据库SQL Server微软的产品.NET 程序员的最爱中大型项目。Oracle Database甲骨文产品适合大型项目复杂的业务逻辑并发一般来说不如 MySQL。MySQL世界上最受欢迎的数据库属于甲骨文并发性好不适合做复杂的业务。主要用在电商、SNS、论坛。PostgreSQL加州大学伯克利分校计算机系开发的关系型数据库不管是私用、商用还是学术研究使用可以免费使用、修改和分发。SQLite是一款轻型的数据库是遵守 ACID 的关系型数据库管理系统它包含在一个相对小的 C 库中。它的设计目标是嵌入式的而且目前已经在很多嵌入式产品中使用了它它占用资源非常的低在嵌入式设备中可能只需要几百K的内存就够了。H2 是一个用Java开发的嵌入式数据库它本身只是一个类库可以直接嵌入到应用项目中。2 ~ MySQL 在 CentOS 7 环境安装说明我们直接在 root 权限下操作步骤一卸载不需要的环境有些系统可能自带MySQL、MariaDBMySQL 的开源分支、完全兼容 MySQL绝大多数语法、API、配置几乎一模一样我们需要先将它们卸载。检查是否存在 MySQL / MariaDBpsaxj|grepmaridbpsaxj|grepmysql我的系统下载了 MySQL所以可以看到但是不存在 MariaDB。如果存在还需要关掉服务systemctl stop maridb.service systemctl stop mysql.service步骤二卸载默认安装包查看有哪些安装包rpm-qa|grepmaridbrpm-qa|grepmysql卸载安装包// 方案一一次性全部卸载 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.rpmmysql57代表 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-Uvhmysql57-community-release-el7-8.noarch.rpm# 查看有没有安装成功ls/etc/yum.repos.d/-al步骤五安装MySQL 服务# 安装服务yuminstall-ymysql-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--importhttps://repo.mysql.com/RPM-GPG-KEY-mysql-2022步骤六查看配置文件和数据存储位置# 配置文件ls/etc/my.cnf# 数据库文件ls/var/lib/mysql步骤七启动服务并查看# 启动MySQL 服务端systemctl start mysql.service# 或者systemctl start mysqld# 查看psaxj|grepmysqld# 关闭mysql 服务端systemctl stop mysqld步骤八登录 MySQL刚开始我们并不知道密码所以先配置为免密码登录。# 打开配置文件vim/etc/my.cnf# 在最后面添加skip-grant-tables# 保存退出即可shift; wq然后登录# 登录# -u 指定身份# -p 指定密码mysql-uroot-p由于我们设置了免密码登录所以直接回车就登录进去了。想要退出直接输入quit即可步骤九简单配置MySQL 本质是一个基于客户端-服务端模式的网络服务。MySQL 服务监听的 TCP 端口默认3306。客户端连接数据库就访问这个端口可以修改为别的端口改完要重启mysqld服务生效。注意改端口之后连接时需要加-P端口号例如mysql -uroot -p -P3307。将MySQL 服务端的字符集配置为utf8。将存储引擎配置为默认使用InnoDB存储引擎。# 打开配置文件vim/etc/my.cnf# 插入选项port3306character-set-serverutf8 default-storage-engineinnodb# 保存退出shift; wq重启 MySQL 服务后生效。# 重启systemctl restart mysqld3 ~ MySQL 基础3.1 服务器数据库表关系所谓安装数据库服务器只是在机器上安装了一个数据库管理系统程序这个管理程序可以管理多个数据库一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据一般会在数据库中创建多个表以保存程序中实体的数据。数据库服务器、数据库和表的关系如下3.2 MySQL 基本使用3.2.1 启动 MySQL 服务端systemctl start mysqld3.2.2 连接 MySQL 服务器mysql-uroot-p-h127.0.0.1-P3306注意如果没有写-h 127.0.0.1默认是连接本地。如果没有写-P 3306默认是连接 3306 端口号。netstat -nltp查看网络服务3.2.3 使用案例查看当前创建的数据库show databases;数据库就是/var/lib/mysql路径下的目录文件。注意命令后面需要加“;”。创建数据库create databasetest;创建数据库表在创建表之前要在哪个数据库建表就要先使用该数据库# 使用数据库use db_name# 建表create table student(idint, 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 mysqld3.3.1 MySQL 的客户端MySQL Client 是用来和 MySQL Server 进行交互的程序。例如我们在 Linux 终端输入mysql-uroot-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数据定义语言用来维护存储数据的结构如创建、删除、修改数据库和表create、drop、altercreate database test;、drop table student;、alter table student add column age int;DMLData Manipulation Language数据操纵语言用来对表中的数据进行增、删、改操作insert、delete、updateinsert 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数据控制语言主要负责权限管理和事务控制grant、revoke、commitgrant all on *.* to rootlocalhost;、revoke all on *.* from rootlocalhost;、commit;说明DQL 本质上是 DML 的一部分但由于select查询使用频率极高通常单独列为一类方便学习和记忆。4 ~ 存储引擎4.1 什么是存储引擎MySQL 存储引擎可以理解为负责“怎么存储和读取表中数据”的组件。MySQL Server 负责接收和处理 SQL但具体把数据写到磁盘、怎么读取、怎么建立索引、怎么支持事务主要由存储引擎负责。例如执行select* from student whereid10;MySQL Server 的 SQL 层会负责解析、优化和执行这个 SQL。真正需要从数据中找到id 10的数据时就会交给存储引擎。查看存储引擎show engines;4.2 常见的存储引擎MySQL 的核心就是插件式存储引擎支持多种存储引擎。现在 MySQL 默认的存储引擎就是InnoDB。还有MyISAMMEMORYCSVArchiveInnoDB负责的事情数据存储索引事务锁MVCCBuffer Pool崩溃恢复Redo Log等一个直观的比喻将 MySQL 想象成图书馆MySQL Server图书馆 │ ├── SQL解析器接待员 │ ├── 优化器查找路线规划员 │ ├── 执行器执行工作人员 │ └── 存储引擎图书仓库管理系统5 ~ 总结本文介绍了 MySQL 的基础知识包括数据库、服务器与表的基本概念。重点讲解了 MySQL 的安装并初步了解了 MySQL 的基本使用以及 MySQL 的客户端、服务端架构以及 SQL 分类。最后介绍了存储引擎的基本概念为后续学习 InnoDB、索引、事务等 MySQL 核心知识打下基础。