云计算大数据——MySQL数据库一(数据库基础与MySQL安装)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、数据库概述
    • [1.1 前置知识](#1.1 前置知识)
    • [1.2 数据库基本概念](#1.2 数据库基本概念)
      • [1.2.1 数据](#1.2.1 数据)
      • [1.2.2 表](#1.2.2 表)
      • [1.2.3 数据库](#1.2.3 数据库)
      • [1.2.4 数据库管理系统(DBMS)](#1.2.4 数据库管理系统(DBMS))
      • [1.2.5 数据库系统(DBS)](#1.2.5 数据库系统(DBS))
    • [1.3 数据库发展史](#1.3 数据库发展史)
      • [1.3.1 第一阶段:层次型/网状型数据库](#1.3.1 第一阶段:层次型/网状型数据库)
      • [1.3.2 第二阶段:关系型数据库](#1.3.2 第二阶段:关系型数据库)
      • [1.3.3 第三阶段:新型数据库](#1.3.3 第三阶段:新型数据库)
    • [1.4 关系型数据库](#1.4 关系型数据库)
    • [1.5 非关系型数据库(NoSQL)](#1.5 非关系型数据库(NoSQL))
      • [1.5.1 NoSQL优点](#1.5.1 NoSQL优点)
      • [1.5.2 NoSQL缺点](#1.5.2 NoSQL缺点)
      • [1.5.3 Redis与Memcached对比](#1.5.3 Redis与Memcached对比)
    • [1.6 关系型与非关系型数据库对比](#1.6 关系型与非关系型数据库对比)
    • [1.7 小结](#1.7 小结)
  • 二、MySQL安装与配置
    • [2.1 环境准备](#2.1 环境准备)
    • [2.2 源码解压与依赖处理](#2.2 源码解压与依赖处理)
    • [2.3 CMake编译配置](#2.3 CMake编译配置)
    • [2.4 MySQL配置](#2.4 MySQL配置)
      • [2.4.1 权限设置](#2.4.1 权限设置)
      • [2.4.2 配置文件修改](#2.4.2 配置文件修改)
    • [2.5 环境变量设置](#2.5 环境变量设置)
    • [2.6 数据库初始化](#2.6 数据库初始化)
    • [2.7 服务管理](#2.7 服务管理)
    • [2.8 账号密码管理](#2.8 账号密码管理)
  • 总结

前言

MySQL 作为全球最流行的开源关系型数据库管理系统(RDBMS),凭借轻量、高效、开源免费、生态完善的特性,成为中小企业核心业务数据库、互联网应用底层存储的首选,也是后端开发、运维、数据岗必备的基础技能。

一、数据库概述

1.1 前置知识

在企业应用架构中,数据库通常作为数据存储与管理的核心组件。常见的架构模式包括:

LAMP:Linux + Apache + MySQL/MariaDB + PHP

LNMP:Linux + Nginx + MySQL/MariaDB + PHP

数据库在这些架构中负责存储和管理核心业务数据,例如:

微信:用户聊天记录、语音、图片、视频等

外卖平台(如美团、饿了么):订单信息、支付记录、商家数据

游戏(如绝地求生、王者荣耀):玩家信息、装备数据、对战记录

1.2 数据库基本概念

1.2.1 数据

定义:描述客观事物的符号记录(Data),包括数字、文字、图像、声音等。

存储方式:

以记录形式存储,统一格式。

相同类型的数据存放在一起(如"学生"数据不会和"图书"混在一起)。

例子:班级同学 → 一名同学是一条记录,每条记录有多个属性(学号、姓名、性别)。

数据库的保存形式:

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

1.2.2 表

表是数据库中数据组织的基本单位,表结构 = 行(记录) + 列(字段)。其特点包括:

记录由字段组成,字段由字符或数字构成

可供多用户共享访问

冗余度低,数据独立性高

1.2.3 数据库

数据库是相关数据表的集合,按照特定组织方式存储的数据集。

1.2.4 数据库管理系统(DBMS)

DBMS是用于操作和管理数据库的软件系统。

主要功能包括:

数据库的创建与维护(建表、转储与恢复、重组、性能监视)

数据定义(数据结构、存储方式、保密模式等)

数据操作(增删改查、统计等)

运行管理(并发控制、权限管理等)

通信接口(与其他软件系统交互)

1.2.5 数据库系统(DBS)

DBA(数据库管理员)负责数据库的备份恢复、性能优化、用户管理等任务。

常见的数据库应用软件包括Navicat、各类管理信息系统(如人事、财务系统)等。

DBMS的工作流程通常包括:

接收用户或应用程序的请求

将请求转换为底层操作指令

执行数据库操作

获取操作结果

对结果进行格式化

将结果返回给用户

1.3 数据库发展史

1.3.1 第一阶段:层次型/网状型数据库

代表产品:IMS(IBM,1969年推出)

1.3.2 第二阶段:关系型数据库

1970年,IBM研究员E.F. Codd提出关系模型,核心思想包括:

把数据放在 二维表(行、列)里,而不是像层次型或网状型那样用复杂的指针去连接。

用 数学集合和关系代数来描述和操作数据(比如选择、投影、连接)。

代表产品:

System R(IBM开发的第一个真正实现关系模型的实验性数据库系统)

Ingres(加州大学伯克利分校开发,PostgreSQL的前身)

这样数据就更直观、更容易查询和维护。

意义:

关系型数据库的出现,让 SQL(结构化查询语言)成为主流。

现在常见的 MySQL、Oracle、SQL Server 都是关系型数据库的后代。

1.3.3 第三阶段:新型数据库

特点:面向对象、开放性强、支持多平台

趋势:SQL与NoSQL混合使用

代表产品:MariaDB、PostgreSQL、时序数据库等

1.4 关系型数据库

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

行(记录)表示实体

列(字段)表示属性

表与表之间存在关系(一对一、一对多、多对多)

主键是表中唯一标识每条记录的字段,具有唯一性和非空特性,类似于学号或身份证号。

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

1.5 非关系型数据库(NoSQL)

定义:NoSQL(Not Only SQL)数据库以非表格形式存储数据,支持键值对、文档、列式等多种数据模型。

典型产品:Redis、Memcached、MongoDB、HBase

应用场景:高并发访问、缓存系统、大数据实时计算

1.5.1 NoSQL优点

数据格式灵活(Key-Value、文档、图片等)

读写速度快(基于内存存储)

扩展性强

部署简单,成本低,开源

1.5.2 NoSQL缺点

不支持SQL语言

事务处理能力较弱

复杂查询支持不足

大部分数据在内存,内存存储成本较高

1.5.3 Redis与Memcached对比

相同点:均用于缓存热点数据,基于内存运行,速度快

不同点:Redis支持数据持久化;Memcached纯内存存储,断电数据丢失

1.6 关系型与非关系型数据库对比

css 复制代码
特点	关系型数据库	非关系型数据库
数据结构	表(二维表)	KV、文档、列式、图形
优点	结构清晰,SQL通用 ,支持事务查询	格式灵活,速度快 ,高并发
缺点	表结构固定,I/O瓶颈	无SQL、事务支持弱 、复杂查询弱
代表产品	MySQL、Oracle、SQL Server	Redis、MongoDB、HBase

1.7 小结

1、主流数据库系统包括关系型(如MySQL、Oracle)和非关系型(如Redis、MongoDB)。

2、DBMS作为桥梁,负责接收和处理数据操作请求。

3、在实际应用中,通常根据需求选择合适的数据库类型:

数据结构化、关系清晰:选择关系型数据库

高并发、非结构化数据、大数据分析:选择非关系型数据库

混合使用:如Redis作缓存,MySQL作持久化存储

数据库是数据的有序集合,DBMS 负责管理,发展历程从关系型到非关系型,实际应用常常结合使用来兼顾数据持久化和高并发性能。

二、MySQL安装与配置

2.1 环境准备

安装必要的编译工具和依赖库:

css 复制代码
yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
- gcc / gcc-c++:编译工具
- ncurses / ncurses-devel:字符终端交互库
- bison:语法分析器
- cmake:MySQL 编译工具

创建MySQL专用用户:

css 复制代码
useradd -s /sbin/nologin mysql

2.2 源码解压与依赖处理

css 复制代码
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

2.3 CMake编译配置

进入源码目录:

css 复制代码
cd /opt/mysql-5.7.17/

执行cmake配置:

css 复制代码
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管理的文件

编译并安装:

css 复制代码
make -j 4 && make install

2.4 MySQL配置

2.4.1 权限设置

css 复制代码
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

2.4.2 配置文件修改

编辑/etc/my.cnf文件:

css 复制代码
[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

2.5 环境变量设置

css 复制代码
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile

2.6 数据库初始化

css 复制代码
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \				#生成初始化密码为空
--user=mysql \                      #指定管理用户
--basedir=/usr/local/mysql \        #指定数据库的安装目录
--datadir=/usr/local/mysql/data		#指定数据库文件的存储路径

2.7 服务管理

css 复制代码
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       #查看端口

2.8 账号密码管理

设置root密码:

css 复制代码
mysqladmin -u root -p password "123456"

登录MySQL:

css 复制代码
mysql -u root -p123456

总结

MySQL 基础的核心是 "理解 + 实操":

避免死记语法,结合业务场景理解 SQL 的设计逻辑(如 WHERE 筛选的本质是 "缩小数据范围");

重视数据类型和约束的选型,这是后续性能优化的基础;

多动手实操(如搭建本地 MySQL、创建业务表、编写查询 SQL),通过实际场景验证知识点;

基础阶段无需追求复杂技巧,重点夯实 "库表设计 - 基础 SQL - 存储引擎 - 索引基础" 四大核心,为进阶学习铺路。

相关推荐
zwm_yy1 小时前
redis原生语句回顾
数据库·redis
c***93771 小时前
【MySQL】深度学习数据库开发技术:使用CC++语言访问数据库
数据库·mysql·数据库开发
u***1371 小时前
开启mysql的binlog日志
数据库·mysql
途经六月的绽放1 小时前
零基础入门 MongoDB:文档型数据库的魅力与应用
数据库
o***74171 小时前
一条sql 在MySQL中是如何执行的
数据库·sql·mysql
科技块儿2 小时前
常见IP归属地数据库对比
网络·数据库·tcp/ip
足球中国2 小时前
SQL Server 索引维护完整指南
数据库
金融小师妹2 小时前
AI视角下黄金避风港属性的量化验证:基于2000-2025年历史数据的时序分析
大数据·人工智能·深度学习·1024程序员节
m***92382 小时前
【MySQL】C# 连接MySQL
数据库·mysql·c#