当前位置: 首页 > news >正文

九五从零开始的运维之路(其二十六)

文章目录

  • 前言
  • 一、概述
    • 1.什么是数据库
    • 2.数据库能干什么
      • (一)企业应用
      • (二)金融行业
      • (三)电子商务
      • (四)社交媒体
      • (五)物联网
    • 3.为什么要用数据库,优势、特性?
      • (一)可靠性和稳定性
      • (二)数据管理能力
      • (三)数据共享和集成
      • (四)数据安全性和隐私保护
      • (五)减少数据冗余
  • 二、数据库类型
    • 1.关系型数据库,RDBMS
      • (一)概述
      • (二)特点
      • (三)代表产品
    • 2.非关系型数据库,NoSQL
      • (一)概述
      • (二)特点
      • (三)代表产品
  • 三、数据库模型
    • 1.层次型数据库模型
    • 2.网状型数据库模型
    • 3.关系型数据库模型
    • 4.非关系型模型
  • 四、MySQL安装
    • 1.yum/rpm安装
      • (一)下载安装包
      • (二)安装数据库服务
      • (三)问题解决
    • 2.yum安装mariadb
    • 3.源码安装
  • 五、mysql登录
    • 1.本地登录
    • 2.借助软件登录
  • 六、mysql配置
    • 1.数据库目录结构
      • (一)rpm安装
      • (二)源码安装
    • 2.主配置文件详解
  • 总结


前言

本篇将简述的内容:Linux系统下的MySQL服务的安装与简述


一、概述

1.什么是数据库

将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合(银行存款的信息、电话薄)
数据库是存储、管理和操作组织化数据的软件系统

2.数据库能干什么

(一)企业应用

存放用户数据、管理企业数据

(二)金融行业

存储分析客户的财务数据

(三)电子商务

存储产品信息、订单信息等

(四)社交媒体

存储社交消息数据

(五)物联网

物联网设备在云服务平台的数据存储

3.为什么要用数据库,优势、特性?

(一)可靠性和稳定性

现代数据库系统通常具有高度可靠性和稳定性,可以提供持久性和容错性,可以确保企业的数据安全性。

(二)数据管理能力

数据库系统提供了一种强大的方式来管理数据,从数据的存储到访问都进行统一的管理。企业可以更好地跟踪、管理和报告数据,从而使工作更加高效。

(三)数据共享和集成

企业常常需要从不同的部门和应用程序中收集信息和数据。通过使用数据库,这些数据可以集成在一起,使企业更容易理解业务、做出决策。

(四)数据安全性和隐私保护

企业往往会处理大量的机密数据,如个人信息、财务信息、业务数据等等。数据库管理系统可以提供安全的访问控制和数据保护功能,保护数据的隐私性和机密性。

(五)减少数据冗余

数据库技术可以帮助企业减少数据冗余和重复,提高数据的一致性、准确性和可重用性。

二、数据库类型

1.关系型数据库,RDBMS

(一)概述

关系型数据库是一种使用表格来展示和管理数据的数据库,关系型数据库的核心是数据之间的关系,因此也叫做“关系数据库”。RDBMS可以让用户很容易地使用和管理这些关系

(二)特点

便于查询和操作:SQL语句
结构化数据:使用行和列存放数据
数据的一致性和完整性:各种约束条件
并发性:支持多用户连接的隔离性

(三)代表产品

MySQL:
瑞典MYSQL AB公司开发,现由甲骨文公司管理
PostgreSQL:
PostgreSQL全球开发组开发的免费的开源的数据库管理系统

2.非关系型数据库,NoSQL

(一)概述

NoSQL(Not only SQL)是一种非关系型数据库模型,其数据存储和查询机制与传统的关系型数据库不同

(二)特点

非结构化数据:文本、图像、媒体等
分布式存储:分布在多个节点中,实现高并发
没有固定的规范模式:无需定义表和列,不强制要求结构
高可伸缩性:支持水平扩展,增加或删除节点
高性能:高速读写操作,比传统的关系型数据库效率要高

(三)代表产品

MongoDB:一款基于文档存储模型的非关系型数据库软件
Redis:一款基于内存存储的非关系型数据库,与MongoDB一样广泛应用于互联网领域, Redis常用于快速读写操作、缓存等场景

三、数据库模型

1.层次型数据库模型

	1966年,IBM研究员Codd提出层次结构模型它的数据结构如同树状结构。每个节点都只有一个父节点,但可以有多个子节点这种模型存在层次结构复杂、扩展性差、数据操作限制等问题

2.网状型数据库模型

1969年,CODASYL工作组发布了网络模型
它使用复杂链表来表示数据之间的关系,并增加了数据结构的灵活性和递归处理能力,从而解决了层次结构模型的一些问题
解决了层次结构模型的一些问题。但是网络模型需要了解复杂的物理存储结构,对程序设计人员的要求比较高

3.关系型数据库模型

1970年,Codd提出了关系型模型,也就是目前SQL和RDBMS所采用的模型
关系型模型基于二维表格的结构组织数据,每个表格称为关系,每行记录代表一个实体,每列记录代表一个属性。关系之间通过主键和外键进行关联
它具有数据结构简单、数据组织规范、数据操作强大、数据完整性可控等优点,是目前应用最广泛的数据库模型

4.非关系型模型

非关系模型是指在数据库中,数据的组织方式不是基于关系模型来建立的,而是通过其他的方式来组织和表示数据。
非关系模型相对于关系模型来说更加灵活,可以更好地适应不同类型的数据和应用需求。但同时,非关系模型也更加复杂,操作和查询数据的难度较高。

四、MySQL安装

1.yum/rpm安装

(一)下载安装包

wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

(二)安装数据库服务

rpm -ivh mysql57-community-release-el7-8.noarch.rpm
yum -y install mysql-server

(三)问题解决

1、安装mysql提示公钥未安装
提示信息

mysql-community-common-5.7.42-1.el7.x86_64.rpm 的公钥尚未安装
失败的软件包是:mysql-community-common-5.7.42-1.el7.x86_64

GPG 密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
分析原因:mysql密钥过期
解决办法:安装新的密钥然后再安装服务

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum -y install mysql-server

或者
不使用GPG密钥验证

yum -y install mysql-server --nogpgcheck

2、登录数据库时提示密码错误
提示信息

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

分析原因:输入的密码是错误的,所以拒绝你的访问
解决问题:
(一)使用随机密码登录
查看临时密码

grep 'temporary password' /var/log/mysqld.log

登录时使用查看到的随机密码

mysql -u root -p
Enter password: 输入随机密码

(二)自行重置密码
重置密码的第一步就是跳过MySQL的密码认证过程
进入数据库的配置文件

vim /etc/my.cnf

添加参数,不验证密码进入mysql

skip-grant-tables

接下来我们需要重启MySQL

systemctl restart mysqld

重新登录数据库时,直接按回车
查看数据库

show databases;

使用mysql数据表

use mysql;
修改root用户使用新的密码

alter user 'root'@'localhost' idnentified by '123..coM';

如果报错,先刷新配置,在删除原来的root用户,然后再执行创建的操作

flush privileges;
drop user 'root'@'localhost';
create  user  'root'@'localhost' identified by '123..coM';

赋予root权限

grant all privileges on *.* to 'root'@'localhost' with grant option;

刷新配置,退出数据库

flush privileges;
exit

恢复最开始的配置文件

vim /etc/my.cnf

去掉配置项

skip-grant-tables

重启mysql,然后使用新密码重新登录数据库

systemctl restart mysqld
mysql -uroot -p123..coM

2.yum安装mariadb

yum -y install mariadb mariadb-server
不使用配置文件越过密码验证,修改密码
mysqladmin -uroot -p password ‘新密码’

3.源码安装

注意事项
CPU最少2核以上
内存最少2G以上
swap分区2G以上
硬盘空间至少20G以上
安装前的准备
安装依赖包

yum -y install gcc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel

下载安装包

cmake-3.9.1-Linux-x86_64.tar.gz

安装cmake,8.0版本的mysql需要cmake3.5版本以上。

gcc-6.3.0.tar.gz

8.0版本的mysql需要gcc版本为5.3以上

mysql-boost-8.0.13.tar.gz

下载带有boost的安装包
安装gcc/升级gcc
安装gcc依赖包

yum -y install gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel glibc-headers

安装gcc

tar xf gcc-6.3.0.tar.xz
cd gcc-6.3.0/
./configure --disable-multilib && make && make install

这个编译会非常非常久,就慢慢等吧,如果有双核CPU可以使用make -j2,4核CPU可以使用make -j4可以大大提高编译速度。
安装mysql

tar xf mysql-boost-8.0.13.tar.gz
cd mysql-8.0.13/
cmake  -DBUILD_CONFIG=mysql_release \
-DINSTALL_LAYOUT=STANDALONE \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DENABLE_DTRACE=OFF \
-DWITH_EMBEDDED_SERVER=OFF \
-DWITH_INNODB_MEMCACHED=ON \
-DWITH_SSL=bundled \
-DWITH_ZLIB=system \
-DWITH_PAM=ON \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DINSTALL_PLUGINDIR="/usr/local/mysql/lib/plugin" \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EDITLINE=bundled \
-DFEATURE_SET=community \
-DCOMPILATION_COMMENT="MySQL Server (GPL)" \
-DWITH_DEBUG=OFF \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SSL=system \
-DWITH_BOOST=./boost
make -j2/4
make install

配置
创建数据库文件夹和日志文件夹,更改用户为mysql

useradd -s /sbin/nologin mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql/
mkdir -p /var/log/mysql
chown -R mysql:mysql /var/log/mysql/
mkdir -p /var/run/mysql
chown -R mysql:mysql /var/run/mysql

修改配置文件my.cnf

vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysql/mysql.log
pid-file=/var/run/mysql/mysql.pid
!includedir /etc/my.cnf.d

初始化mysql数据库

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/

随机密码会在提示信息中显示
复制服务文件到/etc/init.d目录下

cp /opt/mysql-8.0.20/support-files/mysql.server /etc/init.d/
chmod a+x /etc/init.d/mysql.server
/etc/init.d/mysql.server start

查看服务

netstat -anptl | grep mysql

登录数据库修改初始root密码

echo "export PATH=/usr/local/mysql/bin:$PATH:/usr/local/bin" >/etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
mysql -u root -p

在回车之后输入随机密码
修改密码

mysql> alter user 'root'@'localhost' identified with mysql_native_password BY '新密码';
mysql> flush privileges;

看到Query OK, 0 rows affected (0.00 sec)则操作成功
gcc的版本根据软件包的版本需求更新升级

五、mysql登录

1.本地登录

使用命令

2.借助软件登录

navicat

六、mysql配置

1.数据库目录结构

(一)rpm安装

mysql:存储MySQL的数据文件和表结构定义等。
mysql-files:存放需要MySQL账户权限的文件。
mysql-keyring:存放加密密钥,以供MySQL使用。
mysql.sock:MySQL服务器的Unix套接字文件。
ib_logfile0ib_logfile1:InnoDB引擎的事务日志文件。
ibdata1:InnoDB引擎的数据文件,包括表数据和索引等。
*.err:MySQL错误日志文件,记录MySQL运行时的错误和警告等信息。
*.pid:MySQL进程ID文件,存储MySQL进程的进程号。

(二)源码安装

mysql-/
├── extra/ # 额外的工具和脚本
├── include/ # 包含头文件
├── lib/ # 包含库文件
│ ├── libmysqlclient.so # MySQL 客户端库文件
│ └── libmysqld.so # MySQL 服务器端库文件
├── share/ # 包含共享文件
├── support-files/ # 包含初始化脚本和系统服务
│ ├── mysql.server # MySQL 服务启动脚本
│ ├── mysql.service # MySQL systemd 服务配置
│ └── … # 其他各种脚本和配置文件
├── bin/ # MySQL 二进制文件
│ ├── mysqld # MySQL 服务器二进制文件
│ ├── mysql # MySQL 客户端二进制文件
│ ├── mysqladmin # 管理 MySQL 服务器的工具
│ ├── mysqldump # 导出 MySQL 数据库的工具
│ └── … # 其他各种 MySQL 工具
├── man/ # MySQL 帮助手册
├── docs/ # MySQL 文档
├── sql/ # MySQL SQL 脚本文件
└── zlib/ # MySQL 所依赖的 zlib 库

2.主配置文件详解

主配置文件所在 /etc/my.cnf
[mysqld]
[mysqld]"表示该段配置是针对MySQL服务器的
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysql-error.log
pid-file=/var/run/mysql/mysql.pid
max_connections=500
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[mysql]
[mysql]"中的配置项表示该段配置是针对MySQL客户端的
default-character-set=utf8mb4
拓展配置项
port:MySQL端口号
log_warnings:设置错误日志是否记录警告信息
slow_query_log_file:慢日志文件路径名
long_query_time:当查询时间超过指定的秒数时,会被记录到慢日志中
innodb_buffer_pool_size:InnoDB缓存池大小
join_buffer_size:用于JOIN操作的缓存大小
max_allowed_packet:MySQL允许传输的最大数据包大小
skip_name_resolve:禁用DNS解析


总结

以上是在Linux操作系统上安装MySQL的一般步骤总结。根据具体的Linux发行版和版本,可能会有一些细微的差异,但大致流程是相似的。在安装过程中,需要注意权限设置、依赖软件的安装和配置文件的修改等细节,以确保MySQL能够正常运行。

相关文章:

九五从零开始的运维之路(其二十六)

文章目录 前言一、概述1.什么是数据库2.数据库能干什么(一)企业应用(二)金融行业(三)电子商务(四)社交媒体(五)物联网 3.为什么要用数据库,优势、…...

29.Git版本控制工具

1.Git简介 Git是一开源的分布式版本控制系统,提供了存储代码、管理版本历史、分支和合并等功能。 版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。它的主要目的是跟踪和记录软件开发过程…...

【算法题】2790. 长度递增组的最大数目

题目: 给你一个下标从 0 开始、长度为 n 的数组 usageLimits 。 你的任务是使用从 0 到 n - 1 的数字创建若干组,并确保每个数字 i 在 所有组 中使用的次数总共不超过 usageLimits[i] 次。此外,还必须满足以下条件: 每个组必须…...

Qt设置开机自启动无法读取配置文件

问题: Qt5.9.4再注册表中加入开机自启动后,每次开机可以启动,但是无法读取配置文件 解决方案 再main()方法中加入QDir::setCurrent(QCoreApplication::applicationDirPath());即可。 static void AutoRunWithSystem(bool bAutoRun) {// 获取…...

解决Font family [‘sans-serif’] not found问题

序言 以下测试环境都是在 anaconda3 虚拟环境下执行。 激活虚拟环境 conda activate test_python_env 或 source activate test_python_env工具: WinSCP Visual Studio Code 这里笔者使用 WinSCP 工具连接,编辑工具是 Visual Studio Code 一、字体…...

C语言进阶-2

1、多文件C语言项目 1.1、简单的C语言程序(项目) 只有一个C文件(a.c),编译的时候gcc a.c -o a,执行的时候./a 1.2、复杂的C语言程序(项目) 是由多个C文件构成的。例如一个项目中包含2个c文件(…...

Zabbix监控之分布式部署

文章目录 Zabbix监控之分布式部署zabbix proxy概述部署zabbix-proxy节点规划基础环境准备安装proxy以及数据库配置数据库添加服务端host解析修改zabbix-proxy配置文件启动代理服务器 zabbix页面(1)在zabbix页面添加代理(2)zabbix-agent连接proxy Zabbix监控之分布式部署 zabbi…...

vue2企业级项目(七)

vue2企业级项目(七) 组件封装 src目录下创建components/index.js const components require.context("./modules", true, /index\.js$/);export default {install: (Vue) > {components.keys().forEach((key) > {let component compo…...

PDPS教程:导出带颜色的JT格式2D布局图文件的另一种方法

目录 概述 布局图平面化与边缘化处理 导出为JT格式文件 JT格式文件查看 概述 在PDPS软件中导入机器人生产线或工作站2D布局图之前,要先将布局图文件转换为JT格式。 使用Crossmanager软件转换出来的2D布局图文件会将图形元素原有的颜色自动修改为黑白颜色&…...

AI面试官:Asp.Net 中使用Log4Net (二)

AI面试官:Asp.Net 中使用Log4Net (二) 当面试涉及到使用log4net日志记录框架的相关问题时,通常会聚焦在如何在.NET或.NET Core应用程序中集成和使用log4net。以下是一些关于log4net的面试题目,以及相应的解答、案例和代码: 文章目…...

C# Solidworks二次开发:向量相关的数学函数API的使用介绍

今天要讲的是Solidworks二次开发时候,如何使用一些与数学相关的API方法的介绍,在Solidworks中本身提供了一个函数用于对数学对象的访问,函数名为MathUtility。借助这个函数,我们来引出今天要介绍的几个API。 (1&#…...

table 导出表格 Excel

在请求中需要设置 responseType: blob export const requestExport (api, method, params {}, config) > {const apiToken localStorage.getItem(token);const data method GET ? params : data;let headers {BackServer-Token: ${apiToken},};if (config?.headers…...

基于 Flink SQL CDC 数据处理的终极武器

文章目录 一、传统的数据同步方案与 Flink SQL CDC 解决方案1.1 Flink SQL CDC 数据同步与原理解析1.2 基于日志的 CDC 方案介绍1.3 选择 Flink 作为 ETL 工具 二、 基于 Flink SQL CDC 的数据同步方案实践2.1 CDC Streaming ETL2.2 Flink-CDC实践之mysql案例 来源互联网多篇文…...

uniapp使用HQChart的k线,用webSocket更新数据

项目:不借用HQChart的各种接口数据,即数据后端返回,但是数据格式要和原数据格式一样。 //k线图 CreateHQChartKLine(){var chartHeightuni.upx2px(this.ChartHeight);let hqchartCtrlthis.$refs.HQChartCtrl;hqchartCtrl.KLine.Option.Type&…...

idea的Plugins中搜索不到插件

1、ctrlalts 打开设置 ; 2、搜索框输入plugins; 3、点击plugins; 4、点齿轮按钮,选择HTTP Proxy settings; 如下操作: 5、刷新DNS,ipconfig /flushdns 6、重新打开idea 的plugins 插件列表出来了...

flask 实现简单的登录系统demo

你提供的代码是一个基本的Flask应用程序,实现了一个简单的登录系统。以下是代码的详细解释: 1. 导入必要的模块:os 用于生成密钥,Flask 用于创建Web应用程序。 2. 创建Flask应用程序的实例,并为会话管理设置一个密钥。…...

Spring Security安全配置

使用Spring Boot与Spring MVC进行Web开发时,如果项目引入spring-boot- starter-security依赖启动器,MVC Security 安全管理功能就会自动生效,其默认的安全配置是在SecurityAutoConfiguration和UserDetailsServiceAutoConfiguration中实现的。…...

2023Java后端开发之100道常见经典面试题

目录 1.重载和重写的区别? 2.String 和 StringBuffer、StringBuilder 的区别是什么? 3. 与 equals 的区别? 4.抽象类和接口的区别是什么? 5. 面向对象的特点 6.Collection 和 Collections 有什么区别? 7.List、Set、Map 之…...

Redis详解,包括安装命令,应用场景,优缺点,案列分析,各个开发语言如何应用

目录 1、安装命令2、应用场景3、优缺点4、案例分析5、各个开发语言如何应用? Redis 是一个基于内存的开源数据库系统,被广泛应用于 Web 应用、消息队列、缓存、实时统计等领域。下面是 Redis 的详解,包括安装命令、应用场景和优缺点&#xff…...

AI数字人:金融数字化转型的“关键先生”

今年年初ChatGPT的火热,在全球掀起一阵生成式AI(AIGC)热潮。国外的OpenAI、国内的百度等企业,都在AIGC上强力布局。 各种应用场景中,AIGC助力的数字人引起了市场注意。 事实上,数字人不是个新鲜事。早在1…...

mac关闭VPN之后,浏览器就不能够正常上网了(图解)

可能打开谷歌浏览器会显示无法正常连接网络等信息,这个时候可以按照以下步骤: 点击"检查代理服务器地址" 会显示以下这段话,按照这个步骤来操作就可以了。 打开系统偏好设置,点击网络 点击高级 取消掉所有已勾选代…...

YOLOv5改进系列(17)——更换IoU之MPDIoU(ELSEVIER 2023|超越WIoU、EIoU等|实测涨点)

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制...

基于WSL2、Ubuntu和VS Code的CUDA平台运行C语言程序

一、CUDA程序执行方法 执行步骤为: 安装Visual Studio Code。在Visual Studio Code中安装插件WSL与电脑的WSL2进行连接。点击左下角,然后再选择连接到WSL。 在WSL中创建以 .cu 为后缀的文件。 rootDESKTOP-HR6VO5J:~# mkdir CUDA /…...

构建外卖系统小程序,订单管理功能实现步骤详解

外卖系统小程序是近年来越来越受欢迎的一种订餐方式,方便快捷,并且可以减少人与人之间的接触,更加卫生安全。为了搭建一个完善的外卖系统小程序,订单管理功能是必不可少的一部分。在本文中,我们将详细介绍如何实现订单…...

用asp.net开发h5网页版视频播放网站,类似优酷,jellyfin,emby

之前用jellyfin开源软件搞了一个视频播放服务器,用来共享给家里人看电影和电视剧,jellyfin虽然各方面功能都很强大,但是界面和使用习惯都很不适合,于是就想着利用下班休息时间做一套自己喜欢的视频网站出来. 本来是打算直接用jellyfin的源码进行修改,源码是用C# netcore 写的服…...

Redis—相关背景

Redis—相关背景 🔎Redis—特性In-memory data structures—在内存中存储数据Programmability—可编程性Extensibility—可扩展性Persistence—持久化Clustering—集群High availability—高可用 🔎Redis 为什么快🔎Redis 的使用场景Real-tim…...

SSL 证书过期巡检脚本

哈喽大家好,我是咸鱼 我们知道 SSL 证书是会过期的,一旦过期之后需要重新申请。如果没有及时更换证书的话,就有可能导致网站出问题,给公司业务带来一定的影响 所以说我们要每隔一定时间去检查网站上的 SSL 证书是否过期 如果公…...

leetcode 面试题 01.03. URL化

⭐️ 题目描述 🌟 leetcode链接:面试题 01.03. URL化 思路: 计算出空格的个数,我们可以知道最后一个字符的位置 endPos,再从后 end 向前遍历若不是空格正常拷贝,是空格则替换成 %20,最终当空格…...

uni-app在小米手机上运行【步骤细节】

注意细节重点: 1.手机使用数据线与电脑连接,手机连接模式必须是传输文件模式 2.手机必须打开开发者模式 3.打开开发者模式后,仔细浏览并调整USB调试权限,重点打开USB是否允许安装按钮!!! 操作步…...

微信小程序实现日历功能、日历转换插件、calendar

文章目录 演示htmlJavaScript 演示 效果图 微信小程序实现交互 html <view wx:if"{{calendarArr.length}}"><view class"height_786 df_fdc_aic"><view class"grid_c7_104"><view class"font_weight_800 text_align…...