Mysql 8.4.3LTS 的离线部署
文章目录
- 一、部署环境
- 资源配置
- 二、下载地址
- 版本选择
- 三、部署详情
- 1. 上传安装包
- 2. 解压软件包
- 3. 安装mysql
- 3.3.1 创建mysql用户与用户组
- 3.3.2 授权安装文件夹
- 3.3.3 安装libaio依赖 (坑)
- ubuntu24.04 中关于libaio的坑
- 3.3.4 初始化Mysql数据库
- 3.3.5 编辑my.cnf
- 3.3.6 配置环境变量
- 3.3.7 启动mysql
- 设置开机启动
- 3.3.8 登录mysql
- 3.3.8.1 创建root
- 3.3.8.2 Plugin 'mysql_native_password' is not load 两种解决办法
- 重新启动该插件(不推荐)
- 使用官方推荐方式
- 3.3.8.3 授权
- 四、快速部署脚本
一、部署环境
软件:mysql8.4.3LTS
系统:ubuntu24.04
资源配置
资源分配的大小与业务系统的体量有关系;所以没有固定
CPU: 2核
内存: 4 GB
磁盘: 50 GB sda[系统盘] 50GB, 默认分区
sdc[数据盘] 100GB 挂载点 /dcdata
二、下载地址
MySQL :: Download MySQL Community Server

版本选择
由于我的操作系统比较新, 通过 ldd --version 命令查看glibc版本为2.39,所以选择了 glibc 2.28的版本
**注:**如果操作系统支持的话还是选择新的;但是考虑兼容性和维护性,我个人的部署脚本中目前选择的还是glibc2.17的包;
演示使用的是glibc2.28版本的包,后续我也将这个版本的Mysql部署到开发和测试环境中使用,组员一起体验他的稳定性和性能。
三、部署详情
1. 上传安装包
将安装包上传到服务器中,使用root用户安装,上传路径
/root/mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz

2. 解压软件包
安装包上传后,执行解压到/dcsm目录下
# 新建dcsm文件夹
mkdir /dcsmtar -xvf /root/mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz -C /dcsmcd /dcsm && mv mysql-8.4.3-linux-glibc2.28-x86_64/ mysql
3. 安装mysql
3.3.1 创建mysql用户与用户组
查询系统中是否存在mysql用户
cat /etc/passwd | cut -f1 -d':' | grep -w "mysql" -cgroupadd mysql && useradd -r -g mysql -s /bin/false mysql

3.3.2 授权安装文件夹
# 创建相关文件夹
mkdir -p /dcdata/mysql/log && mkdir -p /dcdata/mysql/data && mkdir -p /dcdata/mysql/run && mkdir -p /dcdata/mysql/lib# 授权
chown -R mysql:mysql /dcsm/mysql && chown -R mysql:mysql /dcdata/mysql

3.3.3 安装libaio依赖 (坑)
这个依赖是和你操作系统版本有关系的;
ubuntu24.04 中关于libaio的坑
该系统在安装后自带libaio

虽然whereis搜不到libaio.so.1 这个文件; 但系统中确实安装了 libaio;
这也是我后续初始化依然报错的原因;解决办法就是建立超链接,让mysql在初始化的时候找到这个命令
ln -s /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1

这里介绍查找方法;
找一台和你镜像一样,或者操作系统版本一样的可以联网的机器;
apt search libaio

去/var/cache/apt/archives/ 下找到这个离线deb包; 在离线环境下就可以直接dpkg -i 安装这个依赖包了
注:如果不安装此依赖,后续初始化mysql数据库时会提示缺少此依赖,官网教程中也特意提到要安装这个依赖。
3.3.4 初始化Mysql数据库
cd /dcsm/mysql # 初始化
bin/mysqld --initialize --user=mysql --basedir=/dcsm/mysql --datadir=/dcdata/mysql/data --log-error=/dcdata/mysql/log/mysqld.log

注:这是ubuntu24.04 上的坑。系统的 libaio.so.1 软连接的地址不存在;
解决方法就是重新建立一个软链接
ln -s /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1
3.3.5 编辑my.cnf
/etc/my.cnf
[mysqld]
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
#innodb_buffer_pool_size = 128M
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
basedir=/dcsm/mysql
datadir=/dcdata/mysql/data
socket=/dcdata/mysql/lib/mysql.sock
port=3306
log-error=/dcdata/mysql/log/mysqld.log
pid-file=/dcdata/mysql/run/mysqld.pid# 开启远程,类似dblink
federated
log_bin_trust_function_creators=1
# 时间跟随本地
log_timestamps=system
# 允许最大连接数
max_connections=2000
# 关闭binlog日志
skip-log-bin[mysql]
socket=/dcdata/mysql/lib/mysql.sock
3.3.6 配置环境变量
### 添加到系统服务中
cp /dcsm/mysql/support-files/mysql.server /etc/init.d/mysql && chmod +x /etc/init.d/mysql### 配置到环境变量中
echo "/dcsm/mysql/lib" >>/etc/ld.so.conf &&
echo "#MYSQL ENVIRONMENT" >>/etc/profile &&
echo "export PATH=/dcsm/mysql/bin:/dcsm/mysql/lib:\$PATH" >>/etc/profile &&
source /etc/profile
3.3.7 启动mysql
### 重新加载systemd的配置信息
systemctl daemon-reload
systemctl start mysql

设置开机启动
systemctl enable mysql
3.3.8 登录mysql
获取初始化密码
grep 'temporary password' /dcdata/mysql/log/mysqld.log | awk '{print $NF}'

3.3.8.1 创建root
创建mysql账号root,并设置密码
mysql --connect-expired-password -uroot -p
然后输入上述密码;
连上mysql后,修改root密码,
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘MyNewPass’;

原因参考:[MySQL8.0.34 开始被弃用mysql_native_password插件](https://dev.mysql.com/doc/refman/8.4/en/native-pluggable-authentication.html#:~:text=MySQL client programs in MySQL 8.4 (and later),what is desired%2C like this%3A %24> mysql --default-auth%3Dmysql_native_password)
3.3.8.2 Plugin ‘mysql_native_password’ is not load 两种解决办法
重新启动该插件(不推荐)
具体做法就是修改my.cnf 文件

重启mysql,即可生效;
使用官方推荐方式
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
3.3.8.3 授权
use mysql; update user set host = '%' where user ='root'; flush privileges;
至此部署完成~
四、快速部署脚本
该脚本适用于快速部署使用,请注意安装包版本与系统版本;
我用的是ubuntu24.04, mysql8.4.3tls
vim deploy_mysql.sh
#!/bin/bash### 假设安装包已上传到/root下### 解压软件包
mkdir /dcsm
tar -xvf /root/mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz -C /dcsm
cd /dcsm && mv mysql-8.4.3-linux-glibc2.28-x86_64/ mysql### 创建 mysql 用户与用户组
if [ $(cat /etc/passwd | cut -f1 -d':' | grep -w "mysql" -c) -eq 0 ]; thengroupadd mysql && useradd -r -g mysql -s /bin/false mysql
fi### 授权安装文件夹
mkdir -p /dcdata/mysql/log && mkdir -p /dcdata/mysql/data && mkdir -p /dcdata/mysql/run && mkdir -p /dcdata/mysql/lib
chown -R mysql:mysql /dcsm/mysql && chown -R mysql:mysql /dcdata/mysql### 建立软链接
ln -s /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1### 初始化 Mysql
cd /dcsm/mysqlbin/mysqld --initialize --user=mysql --basedir=/dcsm/mysql --datadir=/dcdata/mysql/data --log-error=/dcdata/mysql/log/mysqld.log# 3.3.5 编辑 my.cnf
cat <<EOF > /etc/my.cnf
[mysqld]
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
#innodb_buffer_pool_size = 128M
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
basedir=/dcsm/mysql
datadir=/dcdata/mysql/data
socket=/dcdata/mysql/lib/mysql.sock
port=3306
log-error=/dcdata/mysql/log/mysqld.log
pid-file=/dcdata/mysql/run/mysqld.pid# 开启远程,类似 dblink
federated
log_bin_trust_function_creators=1
# 时间跟随本地
log_timestamps=system
# 允许最大连接数
max_connections=2000
# 关闭 binlog 日志
skip-log-bin[mysql]
socket=/dcdata/mysql/lib/mysql.sock
EOF### 配置环境变量
cp /dcsm/mysql/support-files/mysql.server /etc/init.d/mysql && chmod +x /etc/init.d/mysql
echo "/dcsm/mysql/lib" >>/etc/ld.so.conf
echo "#MYSQL ENVIRONMENT" >>/etc/profile
echo "export PATH=/dcsm/mysql/bin:/dcsm/mysql/lib:\$PATH" >>/etc/profile
source /etc/profile### 启动 mysql
systemctl daemon-reload
systemctl start mysql
systemctl enable mysql### mysql修改密码 并允许远程
initial_password=$(grep 'temporary password' /dcdata/mysql/log/mysqld.log | awk '{print $NF}')
mysql --connect-expired-password -uroot -p"$initial_password" <<EOF
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
use mysql; update user set host = '%' where user ='root'; flush privileges;
EOFsource /etc/profile
脚本授权
chmod +x deploy_mysql.sh
执行部署
./deploy_mysql.sh

连接成功;

相关文章:
Mysql 8.4.3LTS 的离线部署
文章目录 一、部署环境资源配置 二、下载地址版本选择 三、部署详情1. 上传安装包2. 解压软件包3. 安装mysql3.3.1 创建mysql用户与用户组3.3.2 授权安装文件夹3.3.3 安装libaio依赖 (坑)ubuntu24.04 中关于libaio的坑 3.3.4 初始化Mysql数据库3.3.5 编辑…...
h5项目打包上线报错404文件找不到
配置一下路由就可以了 1.找到项目里的这个文件 2.滑到最下面‘源码视图’ 3.找到base,没有的话写上一个,保存后打包就可以了 "h5" : {"router" : {"base" : "./"}}...
mysql上课总结(5)(MySQL的完整性约束(详细介绍))
目录 一、完整性约束。 (1)概念与目的。 <1>概念。 <2>目的。 (2)各个约束的详细(表格) (3)各个约束的简要总结。 <1>主键约束。 <2>唯一约束。 <3>非…...
复原IP地址
分割字符串的姐妹题 题目:93. 复原 IP 地址 - 力扣(LeetCode) 题解:代码随想录 代码: class Solution {List<String> resnew ArrayList<>();public List<String> restoreIpAddresses(String s) …...
Effective C++ 学习笔记二
Effective C 学习笔记二 文章目录 Effective C 学习笔记二别让异常逃离析构函数绝不在构造和析构的过程中调用virtual函数令operator 返回一个reference to *this在operator中处理"自我赋值"C四种转换 别让异常逃离析构函数 C 并不禁止析构函数吐出异常,…...
以「JIMUMETA元宇宙体验馆」为例,探讨有哪些元宇宙场景?
让我们以「JIMUMETA元宇宙体验馆」为例,深入探讨元宇宙场景中提供的产品与服务。该体验馆由视创云展精心打造,集成了企业主展馆、元宇宙虚拟活动分会场、品牌展示分会场、线上论坛会场以及会议室接待会客等多重功能,旨在全方位满足企业发布会…...
RHCE的练习(8)
动态网站 lnmp(LAMP) 解析index.php界面 (1)预配,确保服务能够被访问 systemctl stop firewalld setenforce 0 (2)安装nginx服务 mount /dev/sr0 /mnt cat /etc/yum.repos.d/base.repo dnf …...
yocto是如何收集recipes,如何加入现有的bb文件
yocto通常是如何收集recipes: 在Yocto中,通过以下方式收集recipes: 层(Layers) Yocto项目使用层来组织recipes。层是包含配置文件、recipes和其他相关文件的目录结构。每个层有自己的目录,其中 recipes-* 目录用于存…...
[运维] 服务器本地网络可用性检查脚本
引言 在日常活动中,我遇到过一个令人头疼的问题。测试使用的远程终端在第二天继续使用时可能就发生无法与外网通信的情况,往往连上终端后在拉取资源时才能发现。这导致每次使用前都需要手动检查网络状况,增加了不必要的麻烦。为了简化这一过…...
MYSQL-显示信息关于服务器插件语法(二十五)
13.7.5.25 SHOW PLUGINS 语句 SHOW PLUGINSSHOW PLUGINS 显示信息 关于服务器插件。 SHOW PLUGINS 输出示例: mysql> SHOW PLUGINS\G *************************** 1. row ***************************Name: binlogStatus: ACTIVEType: STORAGE ENGINE Librar…...
【线下培训】龙信受邀参加开封市公安局举办的电子数据取证培训班
文章关键词:电子数据取证、手机取证、云取证、国产化取证 为了提升开封市公安机关在互联网电子数据取证分析方面的专业能力,龙信为开封市公安机关量身打造了一场高质量的电子数据取证分析技能培训课程。 本次培训课程不仅涵盖了电子数据取证的基础理论、…...
软件测试工程师面试整理 —— 编程与自动化!
在软件测试领域,编程与自动化是提升测试效率、覆盖率和可靠性的关键因素。掌握编程技术和自动化测试框架,能够帮助测试人员有效地执行大量重复性测试任务,并迅速反馈软件的质量状况。以下是编程与自动化在测试中的主要应用及相关技术介绍&…...
【鸿蒙新闻】10月29日警用鸿蒙开发者大会在北京胜利召开,开启智慧应用新时代!
10月29日,在公安部科技信息化局、公安部装备财务局指导下,由公安部第一研究所主办,鼎桥通信技术有限公司、OpenHarmony生态委员会及公共安全专委会协办的警用鸿蒙开发者大会在北京胜利召开。会议以“拥抱警鸿创新生态 开启智慧应用新时代”为…...
java.io.IOException: Too many open files
java.io.IOException: Too many open files 前言: 项目最近报 java.io.IOException: Too many open files 问题,大概意思是:意味着你的应用程序尝试打开的文件描述符数量超过了系统允许的最大数量,在linux中每个进程打开的文件描…...
ElementUI el-form表单多层数组的校验
问题描述 提示:这里描述项目中遇到的问题: ElementUI el-form表单多层数组的校验 页面效果: 数据结构: addform: {code: ,type: ,value: ,state: 1,remark: ,fieldList: [{fieldCode: ,resolverEntities: [{resolverType: , re…...
常见的向量范数、矩阵范数和对偶范数-对偶范数详细证明过程
文章目录 对偶范数一般定义: p p p-范数和 q q q-范数的对偶性特例 1:无穷范数和 1 范数的对偶性特例 2:2 范数的对偶是自身特例 3:有限范数与 0 范数的对偶关系(稀疏性)特例 4:核范数ÿ…...
Android 滴滴面经
Android 滴滴面经 文章目录 Android 滴滴面经一面二面三面 一面 Activity的启动的四种模式,四种启动模式的应用场景,单例模式的启动场景,我回答的是闹钟,反问:在单例模式下闹钟运行时点击back键,是回退到闹…...
angular登录按钮输入框监听
说明:angular实现简单的登录页面,监听输入框的值,打印出来,按钮监听,打印数据 效果图: step1:E:\projectgood\ajnine\untitled4\src\app\app.config.ts import { ApplicationConfig, provideZoneChangeDetection } …...
硅谷甄选(10)用户管理
用户管理模块 9.1 静态搭建 主要是el-form、el-pagination <template><el-card style"height: 80px"><el-form :inline"true" class"form"><el-form-item label"用户名:"><el-input placeholder"请…...
Unity XR Interaction Toolkit 开发教程(2):导入 SDK【3.0 以上版本】
文章目录 📕课程总结📕安装 Unity 编辑器与打包模块📕导入 OpenXR📕导入 XR Interaction Toolkit📕打包发布 获取完整课程以及答疑,工程文件下载: https://www.spatialxr.tech/ 视频试看链接&a…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...
统计按位或能得到最大值的子集数目
我们先来看题目描述: 给你一个整数数组 nums ,请你找出 nums 子集 按位或 可能得到的 最大值 ,并返回按位或能得到最大值的 不同非空子集的数目 。 如果数组 a 可以由数组 b 删除一些元素(或不删除)得到,…...
MySQL 数据库深度剖析:事务、SQL 优化、索引与 Buffer Pool
在当今数据驱动的时代,数据库作为数据存储与管理的核心,其性能与可靠性至关重要。MySQL 作为一款广泛使用的开源数据库,在众多应用场景中发挥着关键作用。在这篇博客中,我将围绕 MySQL 数据库的核心知识展开,涵盖事务及…...
ubuuntu24.04 编译安装 PostgreSQL15.6+postgis 3.4.2 + pgrouting 3.6.0 +lz4
文章目录 下载基础包下载源码包编译 PG编译 postgis编译安装 pgrouting下载源码包配置编译参数编译安装 初始化数据库建表并检查列是否使用了 lz4 压缩算法检查 postgis 与 pgrouting 是否可以成功创建 下载基础包 sudo apt update && sudo apt upgrade -y sudo apt i…...
