数据库概念和编译安装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 编译安装实操,助力读者构建完整知识体系,提升数据库应用与运维能力。

相关推荐
Yyyy4821 天前
Ubuntu安装Jenkis
linux·运维·ubuntu
zhuzewennamoamtf1 天前
Linux SPI设备驱动
android·linux·运维
春日见1 天前
在虚拟机上面无法正启动机械臂的控制launch文件
linux·运维·服务器·人工智能·驱动开发·ubuntu
韩立学长1 天前
【开题答辩实录分享】以《自助游网站的设计与实现》为例进行选题答辩实录分享
java·mysql·spring
SAP小崔说事儿1 天前
在数据库中将字符串拆分成表单(SQL和HANA版本)
java·数据库·sql·sap·hana·字符串拆分·无锡sap
松涛和鸣1 天前
Linux Makefile : From Basic Syntax to Multi-File Project Compilation
linux·运维·服务器·前端·windows·哈希算法
川贝枇杷膏cbppg1 天前
asmcmd
数据库·oracle
Predestination王瀞潞1 天前
JDK安装及环境变量配置
java·linux·开发语言
再睡一夏就好1 天前
深入Linux线程:从轻量级进程到双TCB架构
linux·运维·服务器·c++·学习·架构·线程
JIngJaneIL1 天前
基于java+ vue助农电商系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端