楼主: 一万五千里
28 0

[图行天下] 数据库(一)MySQL概述 +MySQL数据库安装 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-7-2
最后登录
2018-7-2

楼主
一万五千里 发表于 2025-12-2 19:42:04 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

一、数据库概述

1、前置知识

在现代企业系统架构中,常见的技术组合包括 LAMP 和 LNMP 架构:

  • LAMP = Linux + Apache + MySQL/MariaDB + PHP
  • LNMP = Linux + Nginx + MySQL/MariaDB + PHP

其中,数据库承担着核心数据的存储与管理功能。例如:

  • 微信:用于保存聊天记录中的文字、语音、图片和视频等信息。
  • 外卖平台(如美团、饿了么):处理订单详情、支付记录以及商家相关信息。
  • 游戏应用(如王者荣耀、绝地求生):维护玩家资料、装备配置及对战战绩。

2、数据库基本概念

2.1 数据

数据是描述客观事物的符号表示,形式多样,包括数字、文本、图像、音频等。

其存储方式具有以下特点:

  • 以统一格式进行记录式存储;
  • 同类数据集中存放,避免不同类型混合(如学生信息不与图书信息混存);
  • 举例来说,在一个班级名单中,每位同学构成一条“记录”,每条记录包含多个属性字段,如学号、姓名、性别等。

从结构上看,MySQL 中的数据组织层级为:

MySQL 服务 → 数据库 → 数据表 → 行(记录) + 列(字段)

2.2 表

表由行(即记录)和列(即字段)组成。

主要特征如下:

  • 每条记录由若干字段构成,而字段本身由字符或数值组成;
  • 支持多用户共享访问;
  • 具备较低的数据冗余度,并实现较高的数据独立性。

2.3 数据库

数据库是一组按照特定结构组织并相互关联的数据集合,本质上是多个数据表的集合。

2.4 数据库管理系统(DBMS)

数据库管理系统是一种专门用于操作和管理数据库的软件工具。

其核心功能涵盖以下几个方面:

  • 数据库建立与维护:建表、数据转储、恢复机制、系统重组、性能监控等;
  • 数据定义:设定数据结构、存储模式、安全保密策略;
  • 数据操作:执行查询、统计分析、更新操作;
  • 运行管理:控制并发访问、权限认证、系统维护;
  • 通信能力:可与其他应用程序交互,比如 Access 或 Office 组件集成。

DBMS 的工作流程如下:

  1. 接收用户的请求指令;
  2. 将高层请求转化为底层数据库操作命令;
  3. 调用数据库执行相应动作;
  4. 获取执行结果;
  5. 对结果进行格式化处理;
  6. 将最终结果返回给用户。

数据库系统属于人机协作系统,通常由硬件设备、操作系统、数据库本身、DBMS、应用软件以及终端用户共同构成。用户可通过 DBMS 或直接通过应用程序来访问和操作数据库内容。

2.5 数据库系统(DBS)

完整的数据库系统包含以下组成部分:

  • 硬件资源
  • 操作系统
  • 数据库
  • 数据库管理系统(DBMS)
  • 应用软件
  • 终端用户

其中,DBA(数据库管理员)负责日常运维任务,如备份与恢复、系统维护、账号权限分配等。

典型的应用软件包括 Navicat、人事管理系统、财务系统、图书馆管理系统等。

3、数据库发展史

3.1 第一阶段:层次型与网状型数据库

早期代表产品为 IBM 于 1969 年推出的 IMS(Information Management System),采用树状或网络结构组织数据,依赖指针连接节点,结构复杂但效率较高。

IMS DB:基于层次数据模型,数据以树形结构组织,支持高效的父-子关系查询。其设计适合固定结构的数据,如账单、库存等场景。

IMS DC(后更名为IMS TM):事务管理组件,支持高吞吐量的在线事务处理(OLTP),例如银行交易或航班预订系统。

3.2 第二阶段:关系型数据库兴起

1970 年,IBM 研究员 E.F. Codd 提出了“关系模型”(Relational Model),标志着数据库技术的重大突破。

该模型的核心理念包括:

  • 使用二维表格(行与列)组织数据,取代复杂的指针链接方式;
  • 利用数学中的集合论与关系代数进行数据描述与操作(如选择、投影、连接等运算);
  • 使得数据更加直观,便于查询与维护。

代表性研究成果包括:

  • System R:由 IBM 开发,首个真正实现关系模型的实验性系统;
  • Ingres:加州大学伯克利分校研发的关系型数据库项目,后续演化出 PostgreSQL。

这一阶段的重要成果是推动了 SQL(结构化查询语言)成为行业标准。如今广泛使用的 MySQL、Oracle、SQL Server 等均源于此体系。

3.3 第三阶段:新型数据库时代

随着应用场景多样化,数据库进入多元化发展阶段,呈现出以下特征:

  • 支持面向对象设计;
  • 强调开放性和跨平台兼容性;
  • 普遍采用 SQL 与 NoSQL 混合架构;
  • 涌现出多种新型数据库产品,如 MariaDB、PostgreSQL、时序数据库等。

4、关系型数据库

关系型数据库基于 E-R 模型(实体-关系模型)构建:

  • 每一行代表一个实体(如一名学生);
  • 每一列对应一个属性(如姓名、年龄);
  • 不同表之间可通过外键建立联系,支持一对一、一对多、多对多的关系类型;
  • 主键要求唯一且非空,类似于身份证号或学号的作用。

主流产品包括:MySQL、Oracle、SQL Server、DB2、PostgreSQL 等。

5、非关系型数据库(NoSQL)

NoSQL 并非“无 SQL”,而是“Not Only SQL”的缩写,意味着其数据存储方式不仅限于传统表格,还可支持键值对、文档、列族等多种格式。

常见代表产品有:Redis、Memcached、MongoDB、HBase。

主要适用于高并发读写、缓存机制、大数据实时处理等场景。

5.1 优点

特性 描述
格式灵活 支持 Key-Value、文档、多媒体等多种数据格式
速度快 多数基于内存存储,具备极高的读写性能
高扩展性 易于横向扩展,适合应对大规模并发请求
成本低 可在普通硬件上部署,降低总体拥有成本

5.2 缺点

  • 缺乏统一的标准查询语言,学习成本较高;
  • 事务支持较弱,部分产品仅提供有限的 ACID 特性;
  • 不适合需要强一致性的业务场景;
  • 数据持久化机制因产品而异,可靠性差异较大。

5.3 Redis 与 Memcached 对比

两者均为内存型缓存数据库,但在功能上有明显区别:

  • Redis 支持丰富数据类型(字符串、哈希、列表、集合等),具备持久化能力,支持主从复制和集群模式;
  • Memcached 仅支持简单的 Key-Value 结构,无持久化功能,更适合纯缓存用途。

6、关系型 vs 非关系型数据库对比

两种数据库各有优劣:

  • 关系型数据库 强调结构化、一致性、事务完整性,适合金融、ERP 等严谨场景;
  • NoSQL 更注重性能、扩展性与灵活性,适用于社交网络、物联网、日志分析等海量数据场景。

7、小结

数据库作为信息系统的核心组件,经历了从层次/网状模型到关系模型,再到现代混合架构的发展历程。当前,关系型数据库仍占据主导地位,而在高并发、大数据背景下,NoSQL 技术也发挥着不可替代的作用。合理选择数据库类型,需结合具体业务需求、数据规模、一致性要求等因素综合考量。

二、数据库安装

1、MySQL 5.7 源码编译安装

1.1 环境准备

确保操作系统为 Linux,已安装必要的开发工具链(如 gcc、g++)、CMake 工具及依赖库(如 bison、ncurses-devel)。

1.2 源码解压与依赖处理

下载 MySQL 5.7 源码包后,进行解压,并检查并安装所有编译所需依赖项。

1.3 CMake 编译配置

使用 CMake 进行编译前的参数配置,指定安装路径、数据目录、字符集等关键选项。

1.4 配置 MySQL

1.4.1 权限管理

创建专用的 mysql 用户和组,用于运行数据库进程,提升安全性。

1.4.2 修改配置文件 `/etc/my.cnf`

根据实际环境调整 my.cnf 文件,设置缓冲区大小、连接数限制、日志路径等参数。

1.5 环境变量设置

将 MySQL 的 bin 目录添加至系统的 PATH 变量中,以便全局调用命令行工具。

1.6 数据库初始化

执行初始化脚本生成系统数据库和基础表结构,完成 root 账户初始密码设置。

1.7 服务管理

配置 systemd 或 init 脚本,实现 MySQL 服务的开机自启与 systemctl 控制。

1.8 账号密码管理

首次登录后应立即修改默认密码,创建应用专用账户并分配最小必要权限,保障系统安全。

三、总结

本文系统梳理了数据库的基本概念、发展历程、分类特点及其安装实践过程。通过理解关系型与非关系型数据库的本质差异,有助于在实际项目中做出更合理的选型决策。同时,掌握源码级安装流程,有助于深入理解数据库内部机制,提升运维能力。

数据库核心总结表格

类别 说明
数据 描述事物的符号记录,如数字、文字、图像等
由行(记录)和列(字段)组成的二维结构
数据库 相关表的集合,按一定方式组织存储
DBMS 用于管理数据库的软件,提供定义、操作、控制等功能
DBS 包含硬件、OS、数据库、DBMS、应用软件和用户的完整系统
关系型数据库 基于表格结构,支持 SQL 查询,强调一致性与事务
NoSQL 非关系型数据库,支持多种数据模型,适用于高并发场景
典型产品 MySQL、Oracle、Redis、MongoDB 等

开源特性显著,部署过程简便,整体运维开销相对较低。

5.2 局限性分析

  • 不支持 SQL 查询:缺乏对标准 SQL 语法的支持,限制了其在传统数据库查询场景中的应用。
  • 事务处理能力缺失:无法保障复杂操作的原子性,不适合需要强一致性的业务逻辑。
  • 复杂查询能力弱:在多表连接、嵌套查询等高级查询功能方面表现不足。
  • 内存依赖导致成本上升:数据主要存储于内存中,随着数据量增长,硬件投入相应增加。
CMakeCache.txt

5.3 Redis 与 Memcached 对比

共同点:两者均以内存为存储介质,运行速度快,常用于缓存热点数据以提升系统性能。

差异点:Redis 支持数据持久化,可将内存数据写入磁盘,实现断电后恢复;而 Memcached 完全基于内存,服务重启后数据丢失。

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \		#指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \                             #指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \            #指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8  \                       #指定默认使用的字符集编码,如 utf8
-DDEFAULT_COLLATION=utf8_general_ci \			#指定默认使用的字符集校对规则
-DWITH_EXTRA_CHARSETS=all \						#指定支持其他字符集编码
-DWITH_INNOBASE_STORAGE_ENGINE=1 \              #安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \               #安装ARCHIVE存储引擎 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \             #安装BLACKHOLE存储引擎 
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \            #安装FEDERATED存储引擎 
-DMYSQL_DATADIR=/usr/local/mysql/data \         #指定数据库文件的存储路径
-DWITH_BOOST=/usr/local/boost \     #指定boost的路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost
-DWITH_SYSTEMD=1								#生成便于systemctl管理的文件

6、关系型数据库与非关系型数据库对比

对比维度 关系型数据库 非关系型数据库
数据结构 采用二维表格形式组织数据 支持键值(KV)、文档、列式、图结构等多种模型
优势 结构清晰,通用 SQL 接口,支持复杂的关联查询 数据格式灵活,读写效率高,适合高并发访问
劣势 表结构固定,扩展性差,易出现 I/O 瓶颈 通常不支持 SQL,事务机制薄弱,复杂查询能力有限
典型产品 MySQL、Oracle、PostgreSQL Redis、MongoDB、HBase
/etc/my.cnf

7、总结归纳

当前主流数据库体系主要包括两大类:关系型(如 MySQL、Oracle、SQL Server)和非关系型(如 Redis、MongoDB)。DBMS 作为核心组件,充当应用程序与数据之间的桥梁,负责接收请求、解析指令、执行操作并返回结果。

选型建议:

  • 若数据结构明确、关系复杂,优先选择关系型数据库
  • 面对高并发访问、非结构化数据或大数据分析场景,推荐使用非关系型数据库
  • 实际项目中,常采用 SQL 与 NoSQL 混合架构,例如利用 Redis 做缓存加速,结合 MySQL 实现数据持久化。

数据库本质上是结构化的数据集合,由 DBMS 统一管理。技术演进路径从传统的关系型向多样化非关系型发展,现代应用多采用融合方案,兼顾高性能与数据可靠性。

[client]
port = 3306
socket=/usr/local/mysql/mysql.sock
default-character-set=utf8

[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

[mysql]
port = 3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock
auto-rehash

二、数据库安装配置

1、MySQL 5.7 源码编译安装流程

1.1 系统环境准备

安装必要依赖包:

yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake

各组件作用说明:

  • gcc / gcc-c++:C/C++ 编译器,用于源码编译;
  • ncurses / ncurses-devel:提供字符终端界面支持库;
  • bison:语法分析生成工具;
  • cmake:跨平台构建工具,MySQL 编译所依赖。

创建专用运行用户:

useradd -s /sbin/nologin mysql

1.2 源码解压与辅助库配置

解压 MySQL 源码包至指定目录:

tar zxvf mysql-5.7.17.tar.gz -C /opt

解压 Boost 库(MySQL 5.7 编译所需):

tar zxvf boost_1_59_0.tar.gz -C /usr/local/

重命名目录以便引用:

mv /usr/local/boost_1_59_0 /usr/local/boost
[client] 客户端配置

port = 3306:客户端连接 MySQL 的端口,默认是 3306。
socket=/usr/local/mysql/mysql.sock:客户端通过 Unix socket 文件连接 MySQL(Linux/Unix 环境)。
default-character-set=utf8:默认字符集为 UTF-8。

[mysqld] 服务器端配置

user = mysql:MySQL 服务以 `mysql` 用户身份运行。
basedir=/usr/local/mysql:MySQL 安装目录。
datadir=/usr/local/mysql/data:MySQL 数据库文件存放目录。
port = 3306:MySQL 服务监听端口。
character-set-server=utf8:服务器默认字符集 UTF-8。
pid-file = /usr/local/mysql/mysqld.pid:存放 MySQL 进程 ID 的文件路径。
socket=/usr/local/mysql/mysql.sock:服务器端 socket 文件路径。
bind-address = 0.0.0.0:允许任意 IP 连接 MySQL(0.0.0.0 表示监听所有网卡)。
skip-name-resolve:关闭 DNS 解析,使用 IP 地址验证用户,提高连接速度。
max_connections=2048:最大允许同时连接数。
default-storage-engine=INNODB:默认存储引擎为 InnoDB。
max_allowed_packet=16M:最大允许传输的数据包大小。
server-id = 1:MySQL 唯一 ID,常用于主从复制。
sql_mode=...:设置 SQL 模式,控制 SQL 语法和数据校验规则,如严格模式、禁止零日期、ANSI 引号模式等。

[mysql] 客户端工具配置

port = 3306:客户端连接端口。
default-character-set=utf8:客户端默认字符集 UTF-8。
socket=/usr/local/mysql/mysql.sock:使用 Unix socket 文件连接。
auto-rehash:开启自动补全功能(方便在 `mysql` 命令行中自动补全数据库和表名)。

1.3 使用 CMake 配置编译参数

进入解压后的源码目录:

cd /opt/mysql-5.7.17/

执行 CMake 配置命令(关键参数如下):

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1
    

开始编译并安装(启用多线程加速):

make -j 6 && make install

注:使用 6 核并行编译可加快构建速度。若 CMake 阶段报错,需清除缓存文件后再重新执行。

存储引擎说明:

MYISAM、MERGE、MEMORY 和 CSV 引擎默认已集成到服务器中,无需额外配置。若需静态链接其他引擎,可通过 -DWITH_engine_STORAGE_ENGINE=1 参数启用。

支持的引擎类型包括:ARCHIVE、BLACKHOLE、EXAMPLE、FEDERATED、INNODB(即 InnoDB)、PARTITION(分区支持)、PERFSCHEMA(性能模式)等。

1.4 MySQL 初始化配置

1.4.1 权限设置

赋予 MySQL 用户对安装目录的完全控制权:

chown -R mysql:mysql /usr/local/mysql/

确保配置文件归属正确:

chown mysql:mysql /etc/my.cnf
1.4.2 配置文件调整

根据实际需求编辑 my.cnf 文件,完成服务端参数定制。

1.5 环境变量配置

将 MySQL 可执行路径加入系统全局环境变量:

echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile

1.6 数据库初始化
进入 MySQL 执行目录并执行初始化命令:

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

该操作将生成初始数据库文件,使用 --initialize-insecure 参数表示不设置默认 root 密码。

1.7 服务管理配置
将 MySQL 的 systemd 服务文件复制到系统服务目录中,以便进行服务管理:

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld
netstat -anpt | grep 3306

上述命令依次完成:重载服务配置、启动 mysqld 服务、设置开机自启,并通过端口监听检查服务是否正常运行。

mysql -u root -p123456
1.8 账户与密码配置 初始化完成后,为 root 用户设置初始密码: mysqladmin -u root -p password "123456" 执行后会提示输入原密码(因之前未设密码,直接回车),随后设置新密码为 123456。 登录 MySQL 数据库验证配置结果: 登录成功后可执行以下 SQL 命令进行功能测试: SHOW DATABASES; 确认系统数据库列表正常显示,表明安装和初始化流程已完成。 三、总结:数据库核心知识点归纳
分类 关键点
架构角色 LAMP/LNMP 架构中的核心组成部分,负责持久化存储业务数据,例如微信聊天记录、外卖订单信息等
基本概念 数据以表形式组织,每张表由行和列构成;数据库即多个表的集合;DBMS 提供创建、操作及维护数据库的能力
发展历程 从早期的层次型、网状型数据库,发展至关系型数据库(基于 E.F. Codd 提出的二维表格模型),再到应对大数据场景的 NoSQL(如 Redis、MongoDB)
关系型数据库 适用于结构化数据存储,支持标准 SQL 查询语言,具备复杂查询与事务处理能力,典型代表包括 MySQL、Oracle
NoSQL 面向高并发读写场景,支持灵活的数据模型(如键值对、文档型),牺牲部分事务一致性以换取高性能与横向扩展性
选型策略 结构化数据优先选择关系型数据库;非结构化或超高并发场景采用 NoSQL;实际应用中常采用混合架构,例如 Redis 做缓存 + MySQL 实现数据持久化
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:SQL数据库 MySQL sql 数据库 substitution

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-5 13:19