楼主: 小孽障
114 0

[其他] MySQL数据库基础概念以及编译安装 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

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

楼主
小孽障 发表于 2025-12-2 16:37:58 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

前言

此前与读者探讨了keepalived集群的基本概念及其部署流程,本文将聚焦于MySQL数据库的核心原理及其源码编译安装的详细步骤。

一、数据库概述

1. 基本概念解析

1.1 数据

定义:数据是用于描述客观事物的符号记录(Data),涵盖数字、文字、图像、音频等多种形式。

存储方式:

  • 以统一格式按“记录”形式组织存储
  • 相同类型的数据集中存放,例如“学生”信息不会与“图书”信息混合存储

1.2 表

结构组成:表由行(即记录)和列(即字段)构成 —— 这是核心要点。

主要特征:

  • 每条记录由多个字段组成,字段内容为字符或数值
  • 支持多用户共享访问
  • 具备较低的数据冗余度,并实现较高的数据独立性

1.3 数据库

数据库本质上是若干张相关联的表的集合,按照特定结构组织并持久化存储的数据总和。

1.4 数据库管理系统(DBMS)

定义:用于操作和管理数据库的系统软件。

核心功能包括:

  • 数据库构建与维护:创建表结构、执行数据转储与恢复、进行性能监控与重组
  • 数据定义:设定数据逻辑结构、物理存储方式及安全保密机制
  • 数据操作:实现查询、统计分析、更新等操作
  • 运行控制:处理并发访问、权限验证以及系统维护任务
  • 通信能力:可与其他应用软件(如Office套件、Access)交互协作

1.5 数据库系统(DBS)

系统构成:由硬件平台、操作系统、数据库本身、DBMS、应用软件以及最终用户共同组成的人机交互体系。

用户可通过DBMS或专用应用程序对数据库进行访问与操作。

关键角色说明:

  • DBA(数据库管理员):负责备份恢复、日常维护、安全管理及用户权限配置
  • 典型应用软件:Navicat、人事管理系统、财务系统、图书管理系统等

DBMS工作流程:

  1. 接收客户端请求
  2. 转化为底层数据库指令
  3. 执行对应的数据操作
  4. 获取执行结果
  5. 格式化输出内容
  6. 将响应返回给用户

2. 数据库发展历史

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

代表系统:IMS(IBM于1969年推出)

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

标志性事件:1970年,IBM研究员E.F. Codd提出“关系模型(Relational Model)”

核心理念:

  • 采用二维表格(行列结构)组织数据,取代传统复杂的指针链接方式
  • 利用数学中的集合论与关系代数来表达和操作数据(如选择、投影、连接等)
  • 显著提升数据的直观性、可查询性与可维护性

代表性成果:

  • System R(IBM开发):首个真正实现关系模型的实验性系统
  • Ingres(加州大学伯克利分校):另一早期系统,后衍生出PostgreSQL

深远影响:

  • 推动SQL(结构化查询语言)成为行业标准
  • 现代主流数据库如MySQL、Oracle、SQL Server均源于此技术路线

2.3 第三阶段:新型数据库演进

发展趋势特点:

  • 面向对象设计思想融入
  • 强调开放性与跨平台兼容性
  • 普遍采用SQL与NoSQL混合架构

新兴数据库实例:MariaDB、PostgreSQL、时序数据库Prometheus

3. 关系型数据库详解

数据建模方式:采用E-R模型(实体-关系模型)

  • 每一行(记录)表示一个实体实例
  • 每一列(字段)表示实体的一个属性
  • 表之间通过外键建立关联关系(一对一、一对多、多对多)

主键特性:唯一性、非空性,类比现实中的学号或身份证号码

常见产品:MySQL、Oracle、SQL Server、DB2、PostgreSQL 等

4. 非关系型数据库(NoSQL)

定义:NoSQL意为“Not Only SQL”,其数据存储不局限于表格形式,支持键值对、文档、列式等多种结构。

典型代表:Redis、Memcached、MongoDB、HBase

适用场景:高并发读写、缓存系统、大数据实时处理

优势:

  1. 数据格式灵活,支持Key-Value、JSON文档、图片等
  2. 基于内存操作,响应速度快
  3. 横向扩展能力强,易于分布式部署
  4. 多数为开源方案,部署成本低

局限性:

  1. 通常不支持标准SQL语句
  2. 缺乏完整的事务支持(ACID特性弱)
  3. 复杂查询能力有限
  4. 大量依赖内存存储,断电可能导致数据丢失(部分支持持久化)

Redis 与 Memcached 对比:

  • 共性:均用于热点数据缓存,以内存为核心存储介质,具备高速读写能力
  • 差异:Redis支持数据持久化到磁盘;而Memcached为纯内存运行,重启后数据清空

5. 关系型 vs 非关系型数据库对比

二、数据库安装实践

MySQL 5.7 源码编译安装流程

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

2. 源码解压与依赖处理

将下载的MySQL源码包解压至指定目录,并确保所有依赖项已正确安装。

3. CMake 编译配置

进入源码目录,使用cmake命令进行编译参数设定,例如指定安装路径、启用插件等。

4. 配置 MySQL

编写或修改my.cnf配置文件,设置数据目录、日志路径、端口、字符集等关键参数。

5. 环境变量设置

将MySQL的bin目录加入系统PATH中,便于全局调用mysql命令。

6. 数据库初始化

执行初始化脚本生成系统数据库和基础表结构,设置root默认密码(如适用版本)。

7. 服务管理

配置systemd服务单元文件,实现MySQL作为系统服务启动、停止、重启与状态查看。

8. 账号密码管理

首次登录后应及时修改默认账户密码,创建普通用户并分配最小权限,保障安全性。

总结

本文系统梳理了数据库的基础理论知识,涵盖从数据、表、DBMS到完整数据库系统的构成要素,并回顾了数据库技术的发展脉络。重点区分了关系型与非关系型数据库的技术特征与应用场景。最后,通过MySQL 5.7的源码编译安装全过程演示,帮助读者掌握实际部署技能,为后续深入学习打下坚实基础。

1. 用户权限配置  
/sbin/nologin mysql

2. 源码解压与依赖环境准备  
将 MySQL 源码包解压至 /opt 目录:  
tar zxvf mysql-5.7.17.tar.gz -C /opt  

同时,将 Boost 库解压到系统指定路径并重命名以便后续编译使用:  
tar zxvf boost_1_59_0.tar.gz -C /usr/local/  
mv /usr/local/boost_1_59_0 /usr/local/boost

3. 使用 CMake 进行编译配置  
进入解压后的 MySQL 源码目录,执行如下命令完成编译参数设置:  
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  

随后开始多线程编译及安装:  
make -j 4 && make install

4. MySQL 配置与权限设置  
为确保服务正常运行,需正确设置安装目录的归属权限:  
chown -R mysql:mysql /usr/local/mysql/  
chown mysql:mysql /etc/my.cnf  

接着创建或修改主配置文件 /etc/my.cnf,内容如下:  
[client]  
port = 3306  
default-character-set=utf8  
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

5. 环境变量配置  
为了能够在任意路径下执行 MySQL 命令,需将二进制路径加入系统环境变量:  
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile  
source /etc/profile

6. 初始化数据库  
切换到 MySQL 的可执行文件目录,并执行初始化操作(使用无密码模式):  
cd /usr/local/mysql/bin/  
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

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  

验证服务是否已监听 3306 端口:  
netstat -anpt | grep 3306

8. 账户与密码管理  
首次安装后为 root 用户设置初始密码:  
mysqladmin -u root -p password "123456"  

使用设定的密码登录数据库:  
mysql -u root -p123456  

成功登录后,可通过以下命令查看当前数据库列表:  
SHOW DATABASES;



总结:  
本文详细介绍了 MySQL 数据库的基本概念及其通过源码编译方式进行安装的完整流程。涵盖了解压、依赖配置、CMake 编译、权限设定、服务注册以及账户管理等关键步骤,旨在帮助用户掌握手动部署 MySQL 的核心方法。
二维码

扫码加我 拉你入群

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

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

关键词:SQL数据库 数据库基础 MySQL sql 数据库

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

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