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 权限下操作!
步骤一:卸载不需要的环境
有些系统可能自带 mysql、mariadb(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 包
- el7:
enterprise 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 主要分为以下四类:
| 分类 | 全称 | 作用说明 | 代表指令 | 典型示例 |
|---|---|---|---|---|
| ddl | data definition language(数据定义语言) | 用来维护存储数据的结构,如创建、删除、修改数据库和表 | create、drop、alter | create database test;、drop table student;、alter table student add column age int; |
| dml | data manipulation language(数据操纵语言) | 用来对表中的数据进行增、删、改操作 | insert、delete、update | insert into student values(1, '张三', '男');、delete from student where id = 1;、update student set name = '李四' where id = 2; |
| dql | data query language(数据查询语言) | 用来查询表中的数据,是 dml 中单独划分出来的一类 | select | select * from student where id = 10; |
| dcl | data control language(数据控制语言) | 主要负责权限管理和事务控制 | grant、revoke、commit | grant 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。
还有:
myisammemorycsvarchive
innodb 负责的事情:
- 数据存储
- 索引
- 事务
- 锁
- mvcc
- buffer pool
- 崩溃恢复
- redo log等
一个直观的比喻:将 mysql 想象成图书馆
mysql server = 图书馆
│
├── sql解析器 = 接待员
│
├── 优化器 = 查找路线规划员
│
├── 执行器 = 执行工作人员
│
└── 存储引擎 = 图书仓库管理系统5 ~> 总结
本文介绍了 mysql 的基础知识,包括数据库、服务器与表的基本概念。
重点讲解了 mysql 的安装!
并初步了解了 mysql 的基本使用以及 mysql 的客户端、服务端架构以及 sql 分类。
最后介绍了存储引擎的基本概念,为后续学习 innodb、索引、事务等 mysql 核心知识打下基础。
到此这篇关于mysql 数据库安装、基础到mysql架构与存储引擎的文章就介绍到这了,更多相关mysql数据库安装内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论