目录
[1. 安装依赖](#1. 安装依赖)
[2. 创建管理用户](#2. 创建管理用户)
[3. 解压源码与依赖库](#3. 解压源码与依赖库)
[4. 编译配置(CMake)](#4. 编译配置(CMake))
[5. 编译与安装](#5. 编译与安装)
[6. 权限管理](#6. 权限管理)
[7. 配置文件修改](#7. 配置文件修改)
[8. 环境变量配置](#8. 环境变量配置)
[9. 初始化数据库](#9. 初始化数据库)
[10. 启动 MySQL](#10. 启动 MySQL)
前言
在当今信息时代,数据已成为驱动社会发展的核心要素。数据库作为高效管理和组织数据的核心技术,广泛应用于互联网、金融、教育、医疗等各个领域。其中,MySQL作为一款开源、高性能、易扩展的关系型数据库管理系统(RDBMS),因其稳定性和灵活性成为全球最受欢迎的数据库之一。无论是构建小型网站还是支撑大型企业级应用,掌握MySQL的使用都至关重要。本章将介绍数据库的基本概念,并详细讲解MySQL的安装步骤,为后续深入学习数据库操作与开发奠定基础。
一、数据库基本概念
数据库(Database)是结构化数据集合 的存储系统,用于高效管理、组织和访问数据。其核心价值在于提供持久化存储 与数据共享能力,支撑各类应用系统的运行。
-
数据模型
- 关系模型:数据以二维表 形式组织,表间通过外键关联
- 非关系模型:包括文档型(如 JSON)、键值对(Key-Value)、图数据库等
\\text{关系模型示例:} \\quad \\begin{array}{\|c\|c\|} \\hline \\text{学号} \& \\text{姓名} \\ \\hline S001 \& \\text{张三} \\ \\hline S002 \& \\text{李四} \\ \\hline \\end{array}
-
数据库管理系统(DBMS)
核心组件包括:
- 存储引擎(数据物理存储)
- 查询处理器(SQL 解析与优化)
- 事务管理器(保证 ACID 特性)
二、数据库发展史
20世纪60年代:萌芽阶段
早期数据管理主要依赖文件系统,如磁带和卡片存储。1963年通用电气开发的**集成数据存储(IDS)**成为首个数据库管理系统(DBMS),奠定了网状数据库模型的基础。1969年,CODASYL组织正式定义了网状数据库标准。
70年代:关系型数据库兴起
1970年,IBM研究员埃德加·科德 发表论文提出关系模型 ,用二维表结构组织数据。1974年,System R 项目首次实现关系数据库原型,并发明了SQL 查询语言。1977年,Oracle推出首个商用关系数据库。
80年代:商业化与标准化
1983年,IBM DB2 发布,支持大型机环境。1986年,SQL 成为ANSI标准,推动跨平台兼容性。此时期联机事务处理(OLTP)需求催生了高并发技术,如锁机制 和事务管理(ACID特性)。
90年代:对象与多维扩展
对象数据库(如ObjectStore )尝试融合面向对象编程,但因复杂性未成主流。1991年,联机分析处理(OLAP)概念提出,推动数据仓库 (如Teradata)发展。90年代末,MySQL (1995)、PostgreSQL(1996)等开源数据库兴起。
21世纪初:互联网与分布式革命
2000年后,Web应用爆发式增长暴露传统数据库扩展瓶颈。2004年谷歌发布BigTable 论文,引领NoSQL运动:
- 键值存储 :如Redis(2009)
- 文档数据库 :如MongoDB(2009)
- 列式数据库 :如Cassandra(2008)
同时,NewSQL(如Google Spanner,2012)尝试兼顾分布式与ACID特性。
2010s至今:云与智能化
云服务商推出托管数据库(如AWS RDS ,2009),实现弹性伸缩。2017年后,多模型数据库 (如FaunaDB )支持混合数据处理。AI驱动的数据库 (如Oracle Autonomous Database)实现自动优化与运维。
\\text{发展脉络} = \\text{集中式} \\rightarrow \\text{分布式} \\rightarrow \\text{智能化}
关键里程碑
| 年代 | 技术突破 |
|---|---|
| 1960s | 网状数据库 |
| 1970s | 关系模型、SQL |
| 1990s | OLAP、开源数据库 |
| 2000s | NoSQL、分布式 |
| 2010s | 云原生、AI集成 |
数据库技术演进始终围绕数据规模 、处理效率 与应用场景三大核心需求持续创新。
三、什么是关系数据库和非关系数据库
关系型数据库
- 核心概念: 基于关系模型 。数据存储在表 中。每张表由行 和列 组成。
- 行:代表一条记录。
- 列:代表该记录的某个属性(字段)。
- 模式固定: 需要预先定义数据的结构(表结构、字段类型、约束等),结构相对固定。
- 关系: 表与表之间可以通过主键 和外键建立关系,实现数据的关联查询。这是其核心优势之一。
- 查询语言: 使用结构化查询语言。这是标准化的语言,功能强大,特别擅长处理复杂的关系型查询(如多表连接)。
- 事务特性: 通常严格遵循ACID特性,保证数据操作的原子性、一致性、隔离性和持久性。这在高一致性要求的场景(如金融交易)中至关重要。
- 典型代表:
- 适用场景: 需要复杂查询、强一致性、事务支持、结构化数据的场景。例如:ERP系统、财务系统、传统业务应用等。
非关系型数据库
- 核心概念: 泛指不基于传统关系模型的数据库。设计目标通常是解决关系型数据库在某些场景下的不足(如灵活性、扩展性、性能)。
- 模式灵活: 数据结构通常不固定或非常灵活(Schema-less 或 Schema-flexible)。可以轻松添加新字段或改变数据结构。
- 存储形式多样: 数据存储形式多种多样:
- 键值对:像一个大字典。
- 文档:存储类似JSON或XML的结构化文档。
- 列族:按列存储数据。
- 图:存储节点和关系。
- 关系处理: 通常不擅长处理复杂的多表关联查询。它们更倾向于将相关数据聚合存储在一起(如在一个文档中)。
- 查询语言: 没有统一的标准查询语言。查询方式通常依赖于特定的数据库类型和API,可能不如SQL通用和强大。
- 事务特性: 对ACID的支持程度不一。很多非关系型数据库为了追求高性能和高可用性,采用BASE原则,提供最终一致性而非强一致性。
- 扩展性: 通常在水平扩展(通过增加服务器节点)方面有优势,更适合处理海量数据和高并发访问。
- 典型代表:
- 键值:Redis, Memcached, DynamoDB
- 文档:MongoDB, Couchbase
- 列族:Cassandra, HBase
- 图:Neo4j
- 适用场景: 需要高并发读写、海量数据存储、灵活的数据结构、易于水平扩展的场景。例如:内容管理系统、实时分析、物联网、社交网络、缓存层等。
总结对比
| 特性 | 关系型数据库 | 非关系型数据库 |
|---|---|---|
| 数据模型 | 表结构(行和列) | 多样(键值、文档、列族、图等) |
| 模式 | 固定,需预定义 | 灵活,可动态变化 |
| 查询语言 | SQL | 数据库特定API或查询语言 |
| 扩展性 | 通常垂直扩展(升级单机性能) | 通常水平扩展(增加机器节点) |
| 事务 | 强ACID支持 | 对ACID支持程度不一,常用BASE |
| 关系处理 | 强项(通过主键/外键关联) | 弱项(更倾向于数据聚合) |
| 典型场景 | 强一致性、复杂查询、事务型应用 | 高并发、大数据量、灵活结构、扩展性 |
简单来说,关系型数据库像结构严谨的表格,适合处理有严格关系和需要精确性的数据;非关系型数据库则像更自由灵活的储物柜或仓库,适合处理大量、快速变化或结构多样的数据。选择哪种取决于具体的应用需求。
四、mysql数据库安装
1. 安装依赖
bash
yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
2. 创建管理用户
bash
useradd -s /sbin/nologin mysql
3. 解压源码与依赖库
bash
tar zxvf mysql-5.7.17.tar.gz -C /opt
tar zxvf boost_1_59_0.tar.gz -C /usr/local/
mv /usr/local/boost_1_59_0 /usr/local/boost
4. 编译配置(CMake)
进入源码目录并执行配置:
bash
cd /opt/mysql-5.7.17/
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
注意 :
若 CMake 报错,需删除 CMakeCache.txt 后重新配置。
5. 编译与安装
bash
make -j 4 && make install
6. 权限管理
bash
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf
7. 配置文件修改
编辑 /etc/my.cnf:
ini
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock
auto-rehash
[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
8. 环境变量配置
bash
echo "PATH=\$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
9. 初始化数据库
bash
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
说明 :
--initialize-insecure会生成空密码的 root 账户,需后续手动设置密码。
10. 启动 MySQL
bash
cd /usr/local/mysql/bin/
./mysqld_safe --user=mysql &
后续步骤
-
登录 MySQL:
bashmysql -u root -p # 直接回车(密码为空) -
修改 root 密码:
sqlALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
总结
本章系统性地介绍了数据库的基本概念,包括数据模型、关系型数据库的特点以及SQL语言的核心作用。通过实践操作,我们完成了MySQL在不同操作系统环境下的安装流程,涵盖了从下载安装包、配置系统环境到验证安装成功的完整步骤。安装过程中需特别注意权限配置与初始安全设置,这是保障数据库稳定运行的关键。成功安装MySQL后,我们已具备利用SQL语句进行数据管理的基础环境。后续章节将进一步深入数据库设计原理、SQL语法实践及性能优化策略,逐步提升数据管理与应用开发能力。