数据库概念和编译安装mysql流程

文章目录


前言

数据库是 IT 领域数据存储与管理的核心,本文从基础概念、两类数据库特性到 MySQL 编译安装实操,系统梳理核心知识,为数据库学习与实践筑牢根基。


一、数据库概念

1、常用知识

LAMP / LNMP 架构

LAMP = Linux + Apache + MySQL/MariaDB + PHP linux apche mysql php

LNMP = Linux + Nginx + MySQL/MariaDB + PHP

数据库的定位

在企业架构中,数据库用于 存储和管理核心数据

示例:

微信:聊天文字、语音、视频、图片

外卖平台(饿了么/美团):订单、支付、商家数据

游戏(绝地求生、王者荣耀):玩家信息、装备、战绩

2、什么是数据

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

存储方式:

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

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

数据库的保存形式:

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

3、什么是表

表结构= 行(记录) + 列(字段)

特点:

1、记录由字段组成,字段由字符/数字组成

2、可供不同用户共享

3、具有较小的冗余度和较高的数据独立性

4、数据库是什么

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

二、数据库管理系统

定义:操作和管理数据库的软件。

主要功能:

  1. 建库与维护(建表、转储与恢复、重组、性能监视)
  2. 数据定义(数据结构、存储结构、保密模式)
  3. 数据操作(查询、统计、更新)
  4. 运行管理(并发控制、存取控制、维护)
  5. 通信(与其他软件交互,如 Access 和 Office 组件)

三、数据库系统

1、数据库系统流程图

2、数据库系统介绍(DBS)

组成:硬件 + 操作系统 + 数据库 + DBMS + 应用软件 + 用户

DBA(数据库管理员):负责备份恢复、维护、用户管理。

数据库应用软件:Navicat、人事管理系统、财务系统、图书管理等。

DBMS 工作模式:

  1. 接收请求
  2. 转换为底层指令
  3. 执行数据库操作
  4. 获取结果
  5. 格式化结果
  6. 返回给用户

四、数据库发展史

第一阶段(层次型/网状型)

IMS(IBM,1969)

第二阶段(关系型)

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

2、用数学集合和关系代数来描述和操作数据(比如选择、投影、连接)。 这样数据就更直观、更容易查询和维护。

意义:

1)现在常见的 PostgreSQL、MySQL、Oracle、SQL Server (微软)都是关系型数据库的后代。

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

第三阶段(新型数据库)

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

SQL + NoSQL 混合使用第三代

新兴数据库:MariaDB、PostgreSQL、时序数据库 Promethues

五、关系型数据库

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

● 行(记录) = 实体

● 列(字段) = 属性

● 表与表之间存在关系(1对1,1对多,多对多)

主键:唯一、非空,类比学号/身份证号。

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

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

1、非关系型数据库介绍

定义:Not Only SQL,存储方式不限于表,可存储键值对、文档、列式数据等。

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

应用场景:高并发、缓存、大数据实时计算。

2、非关系型数据库的优点

  1. 格式灵活(Key-Value、文档、图片等)
  2. 速度快(基于内存存储)
  3. 高扩展性
  4. 成本低(开源,部署简单)

3、非关系型数据库的缺点

  1. 不支持 SQL
  2. 缺少事务处理
  3. 复杂查询支持不足
  4. 大部分数据在内存,成本较高

4、对比 Redis 和 Memcached

相同点:都存储热点数据,内存运行,速度快。

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

七、关系型数据库和非关系型数据库对比

八、编译安装mysql

1、命令和代码块

bash 复制代码
# 1安装依赖
yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
#2上传压缩文件后进行解压。
cd /opt
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
#3定制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

#4编译和安装
make -j 4 && make install
#5创建普通用户管理mysql
useradd -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql/
#6修改配置文件my.cnf
#更改管理主/组
chown mysql:mysql /etc/my.cnf
vim /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
### 结束

#7设置环境变量
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
#8初始化数据库
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
#9启动服务
# 复制 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       #查看端口
#10设置root账号和密码并登入
#给root账号设置密码,跳出确认选项-->直接回车
mysqladmin -u root -p password "123456" 
#登录 
mysql -u root -p123456

2、验证结果

1、依赖安装

2、解压

3、验证mysql编译安装

4、登入mysql


总结

本文全面覆盖数据库概念、系统架构、发展历程及两类数据库差异,结合 MySQL 编译安装实操,助力读者构建完整知识体系,提升数据库应用与运维能力。

相关推荐
倔强的石头1061 小时前
Linux 进程深度解析(一):从内核视角看懂进程的本质
linux·运维·服务器
saber_andlibert1 小时前
【docker】入门基础和镜像、容器
linux·运维·docker·容器
jackletter1 小时前
五大关系数据库(sqlserver、mysql、oracle、pgsql、sqlite)如何结合c#存取时间
mysql·oracle·sqlserver
小醉你真好1 小时前
18、CentOS 9 使用 1Panel 安装 Jenkins
linux·centos·jenkins
默恋~微凉1 小时前
数据库与安装
数据库
郝学胜-神的一滴1 小时前
Linux信号的概念与机制
linux·服务器·开发语言·c++·程序人生
沐雨风栉1 小时前
被局域网困住的文件?cpolar让 Go File 随时随地能用
运维·服务器·开发语言·数据库·后端·缓存·golang
e***87701 小时前
【Redis】centos7 systemctl 启动 Redis 失败
数据库·redis·缓存
徐同保1 小时前
n8n项目node后端sqlite相关的
java·数据库·sqlite