MySQL数据库二进制安装

article/2025/8/15 18:51:58

一、数据库的基本概念

1.数据  

        描述事物的符号记录称为数据(Data)。数字、文字、图形、图像、声音、档案记录等都是数据。
        在数据库中,数据是以“记录”的形式按照统一的格式进行存储的,而不是杂乱无章的。相同格式和类型的数据统一存放在一起,而不会把“人”和“书混在一起存储。这样,数据的存储就能够井然有序。

如下图中存储的一行数据,在数据库中称为一条“记录”(Record)。每条记录中的每一个输入项称为“列 ”。下图中编号、姓名、性别、年龄、民族、专业都是列名。

编号姓名性别年龄民族专业
1王明22计算机科学与技术
2赵玲21信息管理
3张雨彤20音乐
4李新23自动化
5夏雪22通信

2、数据库和数据库表

        不同的记录组织在一起,就形成了数据库(Database,DB)的“表”(Table)。也可 以说,表是用来存储具体数据的,如图 1.1 所示。那么数据库和表存在什么关系呢?简单地说,数据库就是表的集合。它是以一定的组织方式存储的相互有关的数据集合。例如,关系数据库的表由记录组成,记录由字段组成,字段由字符或数字组成。它可以供各种用户共享,具有最小冗余度和较高的数据独立性,它是统一管理的相关数据的集合。通常,数据库并不是简单地存储这些数据的,还要表示它们之间的关系。例如,书和人是存在联系的,书的作者可能就是某个人,因此需要建立书与人的“关系”。这种关系也需要用数据库来表示,因此关系的描述也是数据库的一部分。

3.数据库管理系统和数据库系统

        数据库管理系统(Database Management System,DBMS)是实现对数据库资源有效组织、管理和存取的系统软件。它在操作系统的支持下,支持用户对数据库的各项操作。

DBMS 主要包括以下功能

数据库的建立和维护功能包括建立数据库的结构和数据的录入与转换、数据库的 转储与恢复、数据库的重组与性能监视等功能
数据定义功能包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式 及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语 义的错误数据被输入或输出
数据操纵功能包括数据查询统计和数据更新两个方面
数据库的运行管理功能这是数据库管理系统的核心部分,包括并发控制、存取控 制、数据库内部维护等功能
通信功能DBMS 与其他软件系统之间的通信,如Access 能与其他 0ffice组件进行 数据交换


        数据库系统(Database System,DBS)是一个人-机系统,一般由硬件、操作系统、数 据库、DBMS、应用软件和数据库用户(包括数据库管理员)组成。用户可以通过 DBMS 操作 数据库,也可以通过应用程序操作数据库。应用程序是利用 DBMS 为解决某个具体的管理或数据处理的任务而编制的一系列命令的 有序集合。如果应用程序比较完善,能够提供友好的人机界面,并编译成可执行文件发行,使得普通用户不需要具备计算机的专业知识,在较短时间就学会使用,那么就称为数据库应 用软件。常用的数据库应用软件有人事管理、财务管理、图书管理等信息管理软件及各类信息咨 询系统等。

        数据库管理员(Database Administrator,DBA)负责数据库的更新和备份数据库系 统的维护、用户管理等工作,保证数据库系统的正常运行。DBA一般由业务水平较高、资历 较深的人员担任。需要注意的是数据库、数据库系统、数据库管理系统,甚至数据库表等名词,在日常讨 论中通常不严格区别。遇到此情况时,可以根据具体情况,判断出实际所指的是什么。

二、数据模型

        数据是现实世界中“量 ”的抽象,而数据模型(Data Model)是数据特征的抽象。在数据库系统中,数据模型是它的核心与基础。数据模型表现为数据的结构、定义在其上的操作及约束条件。它从概念层次上描述了系统的静态特征动态特征和约束条件,为数据库系统的信息表示与操作提供了一个抽象框架。
        在 DBMS 的发展过程中,出现了网状模型、层次模型和关系模型三种经典的数据模型。 由于受限于数学基础、编程技术和硬件条件,最初出现的层次模型和网状模型与关系模型相 比,在用户接口的上、中层部分更易于实现。所以,这在很长一段时间阻碍了关系模型的发展。

网状模型弃用
层次模型
关系模型常用

1、关系模型

1.1、数据结构

        关系模型建立在关系代数的理论基础上,数据结构使用简单易懂的二维数据表可以用简单的“实体-关系 ”(E-R)图来直接表示,E-R 图中包含了实体(数据对象)、关系和属性三个要素。如下图表示了银行客户和银行账户之间的关系。

                                              银行客户和银行账户之间的关系(E-R)

实体也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物,如银行 客户、银行账户等
实体集具有相同类型及共享相同性质的实体集合。例如,银行所有客户的集合可以定 义为“银行客户 ”实体集
属性实体所具有的某一特性,一个实体可以有多个属性。例如,“银行客”实体集 中的每个实体均具有姓名、住址、电话等属性
联系实体集之间的对应关系称为联系,也称为关系。例如,银行客户和银行账户之间 存在“储蓄 ”的关系

表 1-1 银行客户表

表 1-1 表示作为银行客户的实体集,客户编码为区分客户实体的唯一标识。

客户编码客户姓名客户住址客户电话
1王明中关村010 - 87654321
2赵玲回龙观010 - 12345678

表 1-2 银行账户表

表 1-2 表示作为银行账户的实体集(账户编码为区分账户实体的唯一标识)

账户编码账户余额
1235982739590298372000.23
2272982753590256815000.55

表 1-3 储蓄关系表

表 1-3 表示建立银行账户和银行客户之间的储蓄关系(储蓄编码为区分各储蓄关系的唯一 标识)

储蓄编码客户编码账户编码
112
221

        需要注意的是,虽然在银行客户看来,自己的账户和别人的账户完全不同,是唯 一的。但是,银行内部往往还是会使用内部编码来区分管理和服务等不同业务

1.2、数据操作

        对于数据库的用户而言,关系模型使用从关系代数上抽象出来的数据库操作语言(DML) 进行操作。结构化查询语言(SQL)就是其中最重要的一种,已经成为关系数据库的标准操作语言。它的特色是直接面向结果,简化操作步骤,使得数据库应用的设计变得非常简单易懂。

        对于数据库的物理结构而言,关系数据库系统的数据结构简单、功能强、数据独立性高、 理论基础坚实。严格的关系数据库以二维的数据库表作为基本数据结构,利用简单或复杂的 索引技术实现查询算法,实现起来相对比较简单,也方便了预编译技术将 SQL 语言直接转化 为有效的数据检索算法

1.3、数据约束

        关系模型的数据约束可以针对实体,也可以针对实体的属性,还可以针对关系,并可以在定义实体、实体属性和关系时全面实现。关系模型使用的数据定义语言(DDL)和关系模型在理论上对关系数据库核心实现的要求,使得数据约束可以很容易实现,但是它的效率并不高

主流数据库

关系型数据库SQL Server
Oracle
MySQL
DB2
非关系型数据库Redis
MongoDB
Memcached
HBase

三、关系型数据库

1、关系数据库的基本结构

        关系数据库使用的存储结构是多个二维表格,即反映事物及其联系的数据描述是以平面表格形式体现的。
        在每个二维表中,每一行称为一条记录,用来描述一个对象的信息;每一列称为一个字段,用来描述对象的一个属性。数据表与数据库之间存在相应的关联,这些关联用来查询相关的数据。如下图所示就是一个数据表。
        关系数据库是由数据表之间的关联组成的。其中

        数据表通常是一个由行和列组成的二维表,每一个数据表分别说明数据库中某一特定的方面或部分的对象及其属性。

        数据表中的行通常叫做记录或者元组,它代表众多具有相同属性的对象中的
        数据表中的列通常叫做字段或者属性,它代表相应数据库中存储对象的共有属性。

2、主键与外键

2.1、主键

        数据表中的每行记录都必须是唯一的,而不允许出现完全相同的记录,通过定义主键(主 关键字,Primary Key)可以保证记录(实体)的唯一性。
        键,即关键字,它是关系模型中一个非常重要的元素
        主键唯一标识表中的行数据,一个主键值对应一行数据。主键由一个或多个字段组成, 其值具有唯一性,不允许取空值(NULL)。一个表只能有一个主键。
        如果一个属性集能唯一地标识表的一行而又不含有多余的属性,那么这个属性集称为候 选键。表中可以有多个候选键,但是只能有一个候选键可以选作表的主键,所有其他候选键 称为备用键。如图所示的“学生信息统计表 ”中,{编号}、{身份证号}或{姓名,专业编号}都可以说是候选键,可以将{编号}定义为主键。

学生信息统计表

编号姓名身份证号性别年龄民族专业编号
1王明110626198801012811221
2赵玲146225198906262638215
3张雨彤130621199010033522203
4李新110265198703051923232
5贾雪110215198403253562222
6王林120026198602092813244
7贾雪130726199002162828205

(2)外键
        一个关系数据库通常包含多个表,通过外键(Foreign Key)可以使这些表关联起来。
        外键是用于建立和加强两个表数据之间的链接的一列或多列。通过将表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就称为第二个表的外键。

例如,在图 “专业名称表 ”中,字段{专业编号}是该表的主键,在图“学生信息统计表 ”中也有一个字段{专业编号},则该字段称为“学生信息统计表’,的外键。
在“专业名称表 ”就称为“主表 ”,“学生信息统计表 ”就称为“从表 ”。“主表 ”和“从表 ”总是成对出现的,相互之间以“外键 ”形成关联。

专业名称表

专业编号专业
1计算机科学与技术
2信息管理
3自动化
4音乐
5美术
6通信
7哲学

3、数据完整性规则

        为了维护数据库中的数据与现实世界的一致性,关系数据库的数据与更新操作必须遵守下列四类完整性规则。

3.1、实体完整性规则

实体完整性规则要求关系中的元组在主键的属性上不能有空值。如果出现空值,那么主 键值就起不到唯一标识元组的作用。例如,在图 1.9所示的“学生信息表 ”中,每个学生都有一个编号,用来唯一标识每个 学生的信息记录,这个编号往往被设为该表的主键,以方便其他数据库表的关联应用。依照 实体完整性规则,“编号”字段不允许为空。

3.2、域完整性规则

域完整性也称列完整性,指定一个数据集对某一个列是否有效或确定是否允许空值

3.3、引用完整性规则

如果两个表之间相互关联,那么引用完整性规则要求不允许引用不存在的元组。

3.4、用户定义的完整性规则

用户定义的完整性规则是针对某一具体数据的约束条件,由应用环境决定。它反映某一具体应用所涉及的数据必须满足的语义要求。系统提供定义和检验这类完整性的机制,以便用统一的系统方法进行处理,不再由应用程序承担这项工作。

四、MySQL二进制安装

1、基础环境准备

#安装MySQL依赖包
dnf -y install gcc libaio numactl openssl ncurses-compat-libs

2、二进制安装

#解压二进制包
tar -xf mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz
#创建运行程序的程序用户
useradd -M -s /sbin/nologin mysql#关闭防火墙
systemctl stop firewalld
#禁用防火墙
systemctl disable firewalld#关闭内核保护机制
setenforce 0
#永久关闭内核保护机制
vim /etc/selinux/config

3、初始化

#移动程序所在的位置
mv mysql-8.0.36-linux-glibc2.28-x86_64 /usr/local/mysql#初始化
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/#记住初始化的密码
Pc<,FxSh!79,

4、设定配置文件

# 编辑 MySQL 配置文件,该文件用于配置 MySQL 服务的各项参数
vim /etc/my.cnf## 以下为配置文件中的编辑内容 ##
# [client] 部分配置客户端连接 MySQL 时使用的参数
[client]
# 指定客户端连接 MySQL 服务时使用的 Unix 套接字文件路径
socket=/usr/local/mysql/data/mysql.sock# [mysqld] 部分配置 MySQL 服务器的核心参数
[mysqld]
# 指定 MySQL 服务器监听的 Unix 套接字文件路径
socket=/usr/local/mysql/data/mysql.sock
# 允许 MySQL 服务器监听所有可用的网络接口
bind-address=0.0.0.0
# 跳过域名解析,提高连接速度
skip-name-resolve
# 指定 MySQL 服务器监听的端口号
port=3306
# 指定 MySQL 的安装基础目录
basedir=/usr/local/mysql
# 指定 MySQL 数据文件的存储目录
datadir=/usr/local/mysql/data
# 设置 MySQL 服务器允许的最大连接数
max_connections=2048
# 设置 MySQL 服务器的字符集为 UTF-8
character-set-server=utf8
# 注意:此处存在拼写错误,正确的应为 default-storage-engine,设置 MySQL 的默认存储引擎为 InnoDB
defualt-storage-engine=INNODB
# 设置 MySQL 服务器允许的最大数据包大小
max_allowed_packet=16M# [mysqld_safe] 部分配置 MySQL 安全启动脚本的参数
[mysqld_safe]
# 指定 MySQL 错误日志文件的存储路径
log-error=/usr/local/mysql/data/error.log# 为 MySQL 的二进制文件创建软链接,方便在系统任何位置直接使用 MySQL 命令
ln -s /usr/local/mysql/bin/* /usr/local/bin/# 将 MySQL 的二进制文件目录添加到系统的环境变量 PATH 中
export PATH=$PATH:/usr/local/mysql/bin# 重新加载系统环境变量配置文件,使新的环境变量设置生效
. /etc/profile
# 另一种重新加载系统环境变量配置文件的方式,与上面的 . /etc/profile 作用相同
source /etc/profile
# 重启系统,使所有配置更改生效
reboot

5、配置守护进程方式启动

# 以服务进程脚本运行,将 mysql.server 脚本复制到 /etc/init.d/ 目录下并命名为 mysqld
cp mysql.server /etc/init.d/mysqld# 加入到守护进程中,使用 vim 编辑器打开 systemd 服务配置文件
vim /lib/systemd/system/mysqld.service## 编辑内容,以下是 mysqld.service 文件的配置内容 ##
[Unit]
# 服务描述信息,可随意填写
Description=zhegedifangsuibianxie
# 表示该服务在网络服务启动完成后启动
After=network.target[Service]
# 服务类型为 forking,意味着服务会通过 fork 子进程的方式启动
Type=forking
# 启动服务时执行的命令
ExecStart=/etc/init.d/mysqld start
# 重新加载服务时执行的命令
ExecReload=/etc/init.d/mysqld restart
# 停止服务时执行的命令
ExecStop=/etc/init.d/mysqld stop
# 为服务创建独立的临时目录
PrivateTmp=true[Install]
# 表示该服务在多用户模式下被激活
WantedBy=mulit-user.target## 重新加载守护进程,让新的服务配置生效 ##
systemctl daemon-reload# 启动 MySQL 服务
systemctl start mysql# 检查 MySQL 服务状态,通过查看网络连接信息来确认 MySQL 是否正常运行
netstat -anpt | grep mysql

alter user 'root'@'localhost' identified with mysql_native_password  by 'pwd123';

 

 

 

 


http://www.hkcw.cn/article/qyUFZIXSsj.shtml

相关文章

【Spring】深入浅出SpringAOP

SpringAOP 前言AOP基础ProxyFactoryPointcutAdvisorProxyFactory策略选择JDK策略的执行流程Cglib策略的执行流程 EnableAspectJAutoProxyAnnotationAwareAspectJAutoProxyCreator 前言 SpringAOP的原理是动态代理&#xff0c;动态代理又分为JDK动态代理和Cglib动态代理&#x…

白玉兰入围奖项全名单 各单元角逐揭晓在即

第30届上海电视节白玉兰奖海外电视剧单元的入围名单已经公布,颁奖典礼将于6月27日举行。至此,本届白玉兰奖的所有入围名单已全部发布,包括中国电视剧单元、纪录片、动画和综艺类别。之前公布的名单中,有10部作品将角逐中国电视剧单元奖项,15部综艺节目也入围了综艺类别的评…

我国北部将有机会出现极光 太阳活动引发期待

北京时间5月31日07时45分左右,太阳活动区14100开始爆发耀斑,软X射线流量快速上升,并在08时05分达到M8.1级中等耀斑强度。中国气象局国家空间天气监测预警中心预判,未来三天可能发生地磁暴。2日左右,我国北部有机会出现较为明显的极光,部分地区甚至可能出现红绿复合极光。…

Hailo8教程笔记

Hailo8教程笔记 Tappas系统整合测试工具模型转换工具资料下载自己安装记录Hailo AI Software Suite – Docker(完整开发环境Docker镜像安装)TAPPAS安装教程安装基础环境OpenCV安装 TAPPAS 所需系统依赖项安装Tappashttps://github.com/hailo-ai/hailort Tappas 系统整合测试工…

马斯克为何离开白宫核心圈子 不再当“替罪羊”

当地时间5月28日,马斯克在社交媒体上宣布其作为特朗普政府“特殊雇员”的任期结束,白宫随即启动离职程序。正值SpaceX星舰基地迈向星辰大海之际,他在白宫的短暂生涯却在争议与抵制中告终。马斯克曾誓言重塑政府效率,最终以“替罪羊”自嘲,从华盛顿的权力漩涡中抽身而退。短…

pikachu通关教程-XSS

XSS XSS漏洞原理 XSS被称为跨站脚本攻击&#xff08;Cross Site Scripting&#xff09;&#xff0c;由于和层叠样式表&#xff08;Cascading Style Sheets&#xff0c;CSS&#xff09;重名&#xff0c;改为XSS。主要基于JavaScript语言进行恶意攻击&#xff0c;因为js非常灵活…

加拿大野火烟尘污染美国 邻国空气质量恶化

近日,加拿大多地野火肆虐,产生的烟尘随风向南扩散,影响了相邻的美国一些州,导致空气污染。据美国环境保护署空气质量监测网站AirNow消息,5月30日上午,明尼苏达州阿罗黑德市一带的空气质量恶化为“橙色”。美国环保署将空气质量从最佳到最差分为六级,依次用绿色、黄色、橙…

卡友跨2400公里送缺氧离世司机回家 爱心接力暖人心

46岁的河南卡车司机常志荣在青藏线因高原缺氧离世。今天上午,他的骨灰及车辆被多名爱心卡友从五道梁地区送回老家安阳林州。5月27日,常志荣在青藏线五道梁地区遭遇严重缺氧,不幸去世。车友任先生透露,出发前同行曾建议他至少携带两罐氧气,但他为了省下30元费用,最终只买了…

以军称打死哈马斯指挥官哈利勒 曾致21名士兵死亡

以色列国防军于当地时间6月1日发布消息称,一名哈马斯指挥官近日被以军打死。这名指挥官名叫哈利勒阿卜杜勒,是哈马斯马瓦西营的成员。他在5月30日的一次联合行动中被击毙,该行动由以色列国防军和以色列安全局共同执行。据以军透露,哈利勒指挥的武装团伙曾在2024年1月22日向…

数据结构(Java版)第四期:ArrayLIst和顺序表(上)

目录 一、顺序表 1.1. 接口的实现 二、ArrayList简介 2.1. ArrayList的构造 2.2. ArrayList的常见操作 2.3. ArrayList的扩容机制 三、ArrayList的具体使用 3.1. 洗牌算法 3.2. 杨辉三角 一、顺序表 上一期我们讲到过&#xff0c;顺序表本质上和数组是差不多的&#…

【Qt】:Dialog 对话框

&#x1f4c3;个人主页&#xff1a;island1314 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f49e; &#x1f49e; &#x1f49e; 生活总是不会一帆风顺&#xff0c;前进的道路也不会永远一马平川&#xff0c;如何面…

【C++】详解vector二维数组的全部操作(超细图例解析!!!)

目录 一、前言 二、 深度理解vector 的二维数组&#xff08;重点&#xff01;&#xff09; 三、vector 二维数组的空间理解&#xff08;重点&#xff01;&#xff09; ✨问题分析 ✨如何合理定制vector的内存空间 四、vector 二维数组的初始化 五、vector 二维数组的 添加…

已解决 javax.xml.transform.TransformerFactoryConfigurationError 异常的正确解决方法,亲测有效!!!

已解决 javax.xml.transform.TransformerFactoryConfigurationError 异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 一、问题分析 二、报错原因 三、解决思路 四、解决方法 五、总结 博主v&#xff1a;XiaoMing_Java 博主v&#x…

【Python】FastAPI入门

文章目录 第一节&#xff1a;FastAPI入门一、FastAPI框架介绍什么是ASGI服务&#xff08;WSGI&#xff09;1、补充Web开发1&#xff09;Web前端开发2&#xff09;Web后端开发 二、FastAPI安装1、安装Python虚拟环境2、安装FastAPI 三、第一个FastAPI案例1、访问接口和文档2、接…

【C++】踏上C++学习之旅(四):细说“内联函数“的那些事

文章目录 前言1. "内联函数"被创造出来的意义2. 内联函数的概念2.1 内联函数在代码中的体现2.2 普通函数和内联函数的汇编代码 3. 内联函数的特性&#xff08;重点&#xff09;4. 总结 前言 本章来聊一聊C的创作者"本贾尼"大佬&#xff0c;为什么要创作出…

C++《string的模拟实现》

在之前的篇章C《string》中我们已经了解了string中关于构造、容量、访问、修改操作等函数的功能&#xff0c;以及初步学习了这些函数的使用该如何使用。通过学习string内的各个函数后我们可以发现在解决一些要使用到字符串的环境下有了string内的这些函数操作能大大简化&#x…

2025华为OD机试真题最新题库 (B+C+D+E+2025A+2025B卷) + 在线OJ在线刷题使用(C++、Java、Python C语言 JS合集)(正在更新2025B卷,目前已收录710道)

2025年&#xff0c;已经开始使用AB卷题库&#xff0c;题目和往期一样&#xff0c;旧题加新题的组合&#xff0c;有题目第一时间更新&#xff0c;大家可以跟着继续学习&#xff0c;目前使用复用题较多&#xff0c;可在OJ上直接找到对应的AB卷学习&#xff0c;可以放心学习&#…

基于Java的不固定长度字符集在指定宽度和自适应模型下图片绘制生成实战

目录 前言 一、需求介绍 1、指定宽度生成 2、指定列自适应生成 二、Java生成实现 1、公共方法 2、指定宽度生成 3、指定列自适应生成 三、总结 前言 在当今数字化与信息化飞速发展的时代&#xff0c;图像的生成与处理技术正日益成为众多领域关注的焦点。从创意设计到数…

【C++】 —— 笔试刷题day_29

一、排序子序列 题目解析 一个数组的连续子序列&#xff0c;如果这个子序列是非递增或者非递减的&#xff1b;这个连续的子序列就是排序子序列。 现在给定一个数组&#xff0c;然后然我们判断这个子序列可以划分成多少个排序子序列。 例如&#xff1a;1 2 3 2 2 1 可以划分成 …

企业微信自建应用实现接收消息和发送消息功能(python)

# 这一周我不断的琢磨企业微信自建应用并且实现了自建应用的消息接收和发送功能 1.笔记&#xff0c;记录 第一步&#xff1a;打开企业微信后台 https://work.weixin.qq.com 1.1 如果没有企业可以在这里申请&#xff0c;如果有可以直接扫码登录 1.2 打开后台-应用管理-自建应用…