MySQL数据库介绍与部署

背景

MySQL 是一个开源的关系型数据库管理系统(RDBMS),最初由瑞典公司 MySQL AB 开发,后被 Oracle 公司收购。MySQL 使用标准 SQL 进行查询和管理数据,并支持多种操作系统。它是最流行的开源数据库之一,被广泛用于Web应用程序开发。

目录

一、基本介绍

1. 基本概念

2. 数据库管理系统(DBMS)

3. 数据库系统及DBMS工作模式

3.1 数据库系统概述

3.2 DBMS工作模式

3.3 图示

4. 数据库的发展史

5. 关系数据库与非关系数据库

5.1 关系数据库

5.1.1 概述与组成

5.1.2 优缺点

5.1.3 示例图示

5.2 非关系数据库

5.2.1概述

5.2.2优缺点

5.3 区别

6. 产品版本功能性迭代

二、部署

1. 安装编译依赖

2. 编译安装

3. 创建普通用户管理mysql

4. 修改核心配置文件

5. 设置环境变量

6. 初始化数据库

7. 给root账号设置密码

8. 登录mysql数据库


一、基本介绍

1. 基本概念

数据库是用来存储和管理数据,是各种表的集合,或者存放行和列的信息,即表中存放各类数据。三者是包含和包含于的关系。以下是数据库的基本介绍:

① 数据(data):描述事物的符号记录,包括数字,文字、图形、图像、声音、档案记录等,以

“记录”形式按统一的格式进行存储

② 表(table):由记录和字段(属性)组成,分别对应行和列;将不同的记录组织在一起,用来存储具体数据

③ 数据库(database):表的集合,是存储数据的仓库,以一定的组织方式存储的相互有关的数据集合

2. 数据库管理系统(DBMS)

DBMS是一种软件工具,实现对数据库资源的有效组织、管理和存取。功能如下:

① 数据库的建立和维护功能(定义蓝图,维修保养)

② 数据定义功能(字段、结构等)

③ 数据操纵功能(增删改查等)

④ 数据库的运行管理功能(软件的状态、操作等)

⑤ 通信功能(与外界对接联系)

3. 数据库系统及DBMS工作模式

3.1 数据库系统概述

一个人去管理一个系统,一般由硬件、操作系统、数据库、DBMS、应用软件和数据库用户(如管理员)组成,用户可以通过DBMS操作数据库,也可以通过应用程序来操作。

3.2 DBMS工作模式

① 接受应用程序的数据请求和处理请求

② 将用户的数据请求(高级指令)转换为复杂机器代码(低层指令)

③ 实现对数据库的操作

④ 从数据库的操作中接受查询结果

⑤ 对查询结果进行处理(格式转换)

⑥ 将处理结果返回给用户

3.3 图示

4. 数据库的发展史

第一代:层次模型与网状模型的数据库系统,如:图书馆、档案库

第二代:关系型数据库,如:公安系统查询个人会生成家庭其他成员关系

第三代:组合型,即关系型数据库+非关系型数据库(作数据缓冲),可以提高抗高并发能力,完成海量数据处理

5. 关系数据库与非关系数据库

5.1 关系数据库

5.1.1 概述与组成

关系数据库是基于关系模型的数据库,数据以表格的形式存储,每个表格包含多个行和列。每一行代表一个记录,每一列代表一个字段。关系数据库使用结构化查询语言(SQL)进行数据检索和操作。它是所有实体之间联系的集合,存储结构是二维表格。常见的关系数据库有:Oracle、MySQL、SQLServerde等。相关概念如下:

① 实体:实体是关系数据库中的一个基本单位,它可以是一个具体的对象,也可以是一个抽象的概念。在关系数据库中,实体通常对应于一个表,表中的每一行就是一个实体。(如:银行客户、账户等)

② 属性:属性是实体的特征或者描述,它用于描述实体的各种特性。属性通常对应于表中的列,列中的每一个值就是一个属性。(如:姓名、电话等)

③ 联系:是实体之间的关联,它用于描述实体之间的关系。在关系数据库中,联系通常对应于表之间的关联,关联的建立通常需要使用外键。(如下图的“储蓄”关系)

其他常用关系型数据库:

mariadb:时序数据库,该数据查询只能往后看,如天气信息

postgrsql:支持高并发的后端数据库,如在线游戏数据的处理

5.1.2 优缺点

优点:

  • 数据结构为二维数据表,易于维护
  • 结构化SQL查询语句,使用方便
  • 可用于复杂查询

缺点:

  • 存储在硬盘,海量存储读写性能较差
  • 固定的二维数据库表,不够灵活、可扩展性较低
  • 由于硬盘I/O瓶颈,抗高并发能力弱 
5.1.3 示例图示

根据“银行客户表”和“银行储蓄表”得到关系数据表“储蓄关系表”

5.2 非关系数据库

5.2.1概述

非关系数据库(NoSQL)是指那些不使用关系模型的数据库、不需要固定的数据格式,它们的数据存储和检索方式更加灵活。在这种模型中,数据被存储为键值对(类似于变量),其中键是唯一的,而值可以是任何类型的数据,包括字符串、数字、列表、集合等。它存放在内存中,常见的非关系数据库有:Redis(占额约85%)、Memcached、mongoDB、HBase等。

5.2.2优缺点

优点:

  • 数据结构无固定格式,可以是key,value形式、文档形式、图片形式等
  • 存放内存中,速度快
  • 高扩展性、有高可用性,可以处理大量数据
  • 成本低,nosql数据库部署简单,基本都是开源软件

缺点:

  • 针对特定的数据模型特定的查询语句,查询较为复杂
  • 数据存放在内存中,容易丢失,关系数据库的安全性可能不如关系数据库
  • 如果一个操作失败,可能会导致数据的不一致,不支持事务处理
  • 不提供sql支持,学习和使用成本较高

5.3 区别

类型关系型数据库非关系型数据库
数据结构固定的二维数据库表无固定格式
查询语句结构化SQL查询语句,可复杂查询特定的查询语句
存储位置硬盘、安全性高、速度较慢内存、安全性低、速度较快

6. 产品版本功能性迭代

5.0-5.1版本,早期产品

5.4-5.7版本,整合了MySQL提高性能,常用5.7版本

6.0-7.1版本,就是MySQLCluster版本为适应新时代对数据库的集群需求而开发,各种bug,目前大厂一般选择8.1

二、部署

MySQL安装方式通常有:yum、二进制编译安装、下载二进制包安装,综合考虑,在生产环境中我们一般选择编译安装,具体步骤如下:

1. 安装编译依赖

yum install -y gcc gcc-c++ ncurses ncurses-devel bison cmake

yum -y install \  
gcc \             #是GNU C编译器,用于编译和链接C程序。
gcc-c++ \         #是GNU C++编译器,用于编译和链接C++程序
ncurses \		  #字符终端下图形互动功能的动态库
ncurses-devel \	  #ncurses开发包
bison \			  #语法分析器
cmake			  #mysql需要用cmake编译安装

2. 编译安装

准备源代码包:

mysql-5.7.17.tar.gz 是 MySQL 数据库的源代码压缩包: 下载地址:MySQL :: MySQL 下载

boost_1_59_0.tar.gz 是 Boost C++ 库的源代码压缩包,下载地址:Download boost_1_59_0.tar.gz (Boost C++ Libraries)

[root@localhost opt]# ls
boost_1_59_0.tar.gz  mysql-5.7.17.tar.gz
[root@localhost opt]# tar zxvf mysql-5.7.17.tar.gz -C /opt        #解压
[root@localhost opt]# tar zxvf boost_1_59_0.tar.gz -C /usr/local/
[root@localhost opt]# mv /usr/local/boost_1_59_0 /usr/local/boost
[root@localhost opt]# cd /opt/mysql-5.7.17/

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管理的文件

[root@localhost mysql-5.7.17]# make -j 4 && make install                       
#4核心编译,并将执行文件及相关依赖拷贝指定目录安装

3. 创建普通用户管理mysql

useradd -s /sbin/nologin mysql          #创建普通用户管理mysql
chown -R mysql:mysql /usr/local/mysql/  #更改安装目录属主属组
chown mysql:mysql /etc/my.cnf           #更改核心配置文件属主属组

4. 修改核心配置文件

vim /etc/my.cnf								#删除原配置项,再重新添加下面内容
[client]									#客户端设置
port = 3306
socket=/usr/local/mysql/mysql.sock			

[mysqld]									#服务全局设置
user = mysql       							#设置管理用户
basedir=/usr/local/mysql					#指定数据库的安装目录
datadir=/usr/local/mysql/data				#指定数据库文件的存储路径
port = 3306									#指定端口
character-set-server=utf8					#设置服务器字符集编码格式为utf8
pid-file = /usr/local/mysql/mysqld.pid		#指定pid 进程文件路径
socket=/usr/local/mysql/mysql.sock			#指定数据库连接文件
bind-address = 0.0.0.0						#设置监听地址,0.0.0.0代表允许所有,如允许多个IP需空格隔开
skip-name-resolve							#禁用DNS解析
max_connections=2048						#设置mysql的最大连接数
default-storage-engine=INNODB				#指定默认存储引擎
max_allowed_packet=16M						#设置数据库接收的数据包大小的最大值
server-id = 1								#指定服务ID号
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

sql_mode常用值如下:

NO_ENGINE_SUBSTITUTION
# 如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
STRICT_TRANS_TABLES
# 在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制
NO_AUTO_CREATE_USER
# 禁正GRANT创建密码为空的用户
NO_AUTO_VALUE_ON_ZERO
# mysql中的自增长列可以从O开始。默认情况下自增长列是从1开始的,如果你插入值为0的数据会报错
NO_ZERO_IN_DATE
# 不允许日期和月份为零
NO_ZERO_DATE
# mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告
ERROR_FOR_DIVISION_BY_ZERO
# 在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。默认情况下数据被零除时MysQL返回NULL
PIPES_As_CONCAT
# 将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似
# ANSI_QUOTES
启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

5. 设置环境变量

echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
# 申明mysql命令便于系统识别
source /etc/profile #执行刷新

6. 初始化数据库

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

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       #查看端口

7. 给root账号设置密码

mysqladmin -u root -p password "123456" 
————》直接回车

8. 登录mysql数据库

[root@localhost ~]# mysql -u root -p123456
mysql> show databases;      #显示当前MySQL服务器上的所有数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
mysql> use mysql;              #选择一个数据库,进行后续的操作
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;            #显示当前数据库中的所有表

31 rows in set (0.00 sec)
mysql> quit                    #退出,或者exit,或者ctrl+d
Bye

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/472362.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

金属表面缺陷检测设备通常采用计算机视觉技术和机器学习算法

金属表面缺陷检测是在金属制造过程中非常重要的质量控制步骤。它涉及检测金属表面可能存在的各种缺陷,如裂纹、气泡、凹坑、氧化、斑点等。这些缺陷可能会影响金属制品的性能和质量,因此需要及早发现并进行处理。 目前,金属表面缺陷检测通常采…

C++:部分题目

1. 封装、继承、多态 封装:将所需的数据成员,以及对数据的操作方法(成员函数),绑定在一起成为类(类型),定义该类型的对象时,成员被自动隐藏在对象内部。通过封装可以限定…

模拟算法总述

模拟 1.模拟算法介绍 模拟算法通过模拟实际情况来解决问题,一般容易理解但是实现起来比较复杂,有很多需要注意的细节,或者是一些所谓很”麻烦”的东西。 模拟题一般不涉及太难的算法,一般就是由较多的简单但是不好处理的部分组成…

.net使用excel的cells对象没有value方法——学习.net的Excel工作表问题

$exception {"Public member Value on type Range not found."} System.MissingMemberException 代码准备运行问题解决1. 下载别的版本的.net框架2. 安装3. 运行 代码 Imports Excel Microsoft.office.Interop.Excel Public Class Form1Private Sub Button1_Click(…

Adams Car——Adams car与Simulink联合仿真

1.修改悬架阻尼、刚度 ①先找到车辆悬架阻尼和刚度文件,这里以阻尼显示为例 ②修改阻尼曲线 找到对应车的文件 ③修改完后进行替换,刚度修改同理 2.转动惯量与车的质量修改

SQL server服务连接失败,通过端口1433连接到主机 localhost的 TCP/IP 连接失败

SQL server服务连接失败,通过端口1433连接到主机 localhost的 TCP/IP 连接失败 出现这个错误的时候,首先确保sql的服务正常启动 通常来说正常安装的SQL server之后,会自带一个软件 打开:SQL server配置管理器 确认一下红框内的…

单片机--数电(2)

组合逻辑电路 根基题目要求设计逻辑电路 组合逻辑电路 由一些逻辑门电路搭建,为实现某些功能的电路 特点 在任意时刻输出只取决于该时刻的输入,与电路原来的状态无关 根据图分析组合逻辑的方法 可以使用multisim的逻辑转换仪 1组合逻辑电路图 2…

C语言——自定义类型——结构体(从零到一的跨越)

目录 前言 1.什么是结构体 2.结构体类型的声明 2.1结构体的声明 2.2结构体的创建和初始化 2.3结构成员访问操作符 2.3.1结构体成员直接访问 2.3.2结构体成员的间接访问 2.4结构体变量的重命名 2.5结构体的特殊声明 2.6结构的自引用 3.结构体内存对齐 3.1对齐规则 3…

保护王国的钥匙:探索特权访问管理 (PAM) 的深度

在零信任架构的范例中,特权访问管理(PAM)正在成为网络安全策略的关键组成部分,旨在控制和监控组织内的特权访问。本文深入探讨了 PAM 在现代网络安全中的关键作用,探讨了其原理、实施策略以及特权访问的演变格局。 什么…

3.20作业

1、思维导图 2、 1> 创建一个工人信息库,包含工号(主键)、姓名、年龄、薪资。 2> 添加三条工人信息(可以完整信息,也可以非完整信息) 3> 修改某一个工人的薪资(确定的一个&am…

机器学习_聚类(Clustering)

文章目录 简介K-均值算法(K_Means) 简介 你经常跟哪些人联系,而这些人又经常给哪些人发邮件,由此找到关系密切的人群。因此,这可能需要另一个聚类算法,你希望用它发现社交网络中关系密切的朋友。 K-均值算法(K_Means) K-均值是…

Cesium新版修改源码后,编译不生效问题

最新版本的cesium源码在编译时默认使用node_models下的cesium/engine,从而导致咱们修改项目中的源码并不会生效 解决方式 : 进入到实际的源码位置,执行npm link 在返回到源码的根目录下执行 npm link ./packages/engine

​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结

接上次博客:Redis(四):持久化和事务:RDB(定期备份)【触发机制、流程说明、文件的处理、优缺点】、AOF(实时备份)【使用AOF、命令写入、文件同步、重写机制、启动时数据恢…

DEiT中如何处理mask数据的?与MAE的不同

在DeiT里面,是通过mask的方式,将maskunmasked的patches输出进ViT中,但其实在下游任务输入的patches还是和训练时patches的数量N是一致的(encoder所有的patches)。 而MAE是在encoder中只encoder未被mask的patches 通过…

蓝桥杯java组 螺旋折线

题目描述 如图所示的螺旋折线经过平面上所有整点恰好一次。 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度。 例如dis(0, 1)3, dis(-2, -1)9 给出整点坐标(X, Y),你能计算出dis(X, Y)吗? 【输入格…

直播预告|Sora 会怎样驱动视频编解码领域的突破与革新

在数字化时代,视频内容的传播与消费已成为日常生活的一部分。视频编解码技术是数字媒体领域的一项核心技术,它影响着视频质量,传输速度以及观看体验。与此同时,视频产业正在经历一场由技术驱动的变革,Sora、AIGC 等相关…

通用组件封装——iconfont 封装图标组件

文章目录 背景一、iconfont 处理1. 一键添加入库功能2. 图标项目配置 二、代码实现 背景 在项目中会使用到大量的图标,而 element 等组件库现有的 icon 图标可能无法满足项目的需要,比如很多图标没有可以替代的,或者项目中有彩色图标的需求都…

前端VUE笔记整理

一:PDA H5 1、对于PDA用到的三个命令说明: npm install: 根据package.json安装依赖文件到node_modules文件夹下(如果是第一次可以删除此文件夹下的文件,这个目录不会上传) ​ npm run serve: 运行PDA程序在本地做客户端 ​ npm run build: 打包文件到d…

【CSP】2020-12-2 期末预测之最佳阈值 排序+差分+前缀和

2020-12-2 期末预测之最佳阈值 排序差分前缀和 索引2020-12-2 期末预测之最佳阈值 排序差分前缀和思路遇到的问题完整代码 索引 历年CSP认证考试真题题解总汇持续更新 2020-12-2 期末预测之最佳阈值 排序差分前缀和 这题并不算难,但也不是直接套公式那么简单&…

SpringBoot3框架,事件和监听器、SPI

事件和监听器 生命周期监听 自定义监听器的步骤: 编写SpringApplicationRunListener实现类(各个实现方法的功能写在其sout内) public class MyAppListener implements SpringApplicationRunListener {Overridepublic void starting(Configu…