【Linux】Ubuntu 22.04 shell实现MySQL5.7 tar 一键安装
参考 https://blog.csdn.net/qq_35995514/article/details/134350572?spm=1001.2014.3001.5501
在原作者基础上做了修改,加了一个删除原有mysql 的脚本
文章目录
- 一、安装下载
- **my.cnf 配置文件**
- 二、执行安装
- **install_mysql.sh 安装脚本**
- 本机免密脚本 ssh_keygen.sh
- mysql 删除脚本
一、安装下载

下载地址:
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.44-el7-x86_64.tar.gz
脚本和tar包结构

my.cnf 配置文件
[root@windp-aio opt]# cat config/my.cnf
[mysql]
socket=/var/lib/mysql/mysql.sock
# set mysql client default chararter
default-character-set=utf8[mysqld]
socket=/var/lib/mysql/mysql.sock
# set mysql server port
port = 3306
# set mysql install base dir
basedir=/usr/local/mysql
# set the data store dir
datadir=/usr/local/mysql/data
# set the number of allow max connnection
max_connections=200
# set server charactre default encoding
character-set-server=utf8
# the storage engine
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
explicit_defaults_for_timestamp=true
[mysql.server]
user=mysql
basedir=/usr/local/mysql
二、执行安装
install_mysql.sh 安装脚本
#! /bin/bash
#
# Author: dearning
# CreateTime: 2024-09-11
# Desc: install mysql5.7.44 on Ubuntu
#
echo "******** INSTALL MYSQL *********"BASEDIR=$(cd "$(dirname "$0")"; pwd)# 卸载原有的mariadb
OLD_MYSQL=$(dpkg -l | grep mariadb | awk '{print $2}')
for mariadb in $OLD_MYSQL; doapt-get remove --purge -y $mariadb
done# 删除原有的my.cnf
rm -rf /etc/mysql/my.cnf# 添加用户组 用户
groupadd mysql
useradd -g mysql mysql# 解压mysql包并修改名称
tar -zxvf $BASEDIR/mysql-5.7.44-el7-x86_64.tar.gz -C /usr/local
mv /usr/local/mysql-5.7.44-el7-x86_64 /usr/local/mysql# 更改所属的组和用户
chown -R mysql /usr/local/mysql
chgrp -R mysql /usr/local/mysqlmkdir -p /usr/local/mysql/data
mkdir -p /usr/local/mysql/log
chown -R mysql:mysql /usr/local/mysql/data# 粘贴配置文件my.cnf
cp $BASEDIR/config/my.cnf /usr/local/mysql/# 安装mysql
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/# 创建持久的 MySQL 服务文件
if [ ! -f /etc/systemd/system/mysql.service ]; thencat > /etc/systemd/system/mysql.service <<EOF
[Unit]
Description=MySQL Community Server
After=network.target[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf
ExecStop=/usr/local/mysql/bin/mysqladmin -u root -p shutdown
Type=exec
Restart=on-failure[Install]
WantedBy=multi-user.target
EOF
fi# 重新加载系统守护进程
sudo systemctl daemon-reload# 启动mysql
systemctl start mysql# 设置开机启动
systemctl enable mysql# 修改环境变量
ln -s /usr/local/mysql/bin/mysql /usr/bin
ln -s /var/lib/mysql/mysql.sock /tmp/
cat > /etc/profile.d/mysql.sh <<EOF
export PATH=\$PATH:/usr/local/mysql/bin
EOFmysqlPw=$(sed -n 2p /root/.mysql_secret)
mysqlPwTMP=$(sed -n 2p /root/.mysql_secret)1
mysqlNewPw=sjc123
hostname=$(hostname)ssh $hostname "source /etc/profile; mysqladmin -h127.0.0.1 -uroot -p'\$mysqlPw' password '\$mysqlPwTMP'; mysqladmin -h127.0.0.1 -uroot -p'\$mysqlPwTMP' password '\$mysqlNewPw'; exit"echo "******** MYSQL installation completed *******"
执行完脚本 成功登录

ssh 操作需要免密 附上
本机免密脚本 ssh_keygen.sh
#! /bin/bash
#
# Author: dearning
# CreateTime: 2024-09-11
# Desc: 本机免密
#
set -x# 获取本机 IP
ip=$(hostname -I | awk '{print $1}')
ssh_hosts=${ip}
ssh_networkname=(windp-aio)
ssh_passwd=winner@001# 安装 expect
if ! command -v expect &> /dev/null; thenecho "安装 expect 命令"sudo apt-get updatesudo apt-get install -y expect
fi ################################
# 生成 SSH 公钥
################################
create_ssh_pub(){echo "生成本地 SSH 公钥"/usr/bin/expect << eofset timeout 30spawn ssh-keygen -t rsa -b 2048expect {"Enter file in which to save the key*" { send "\n"; exp_continue }"Overwrite (y/n)?" { send "y\n"; exp_continue }"Enter passphrase (empty for no passphrase):" { send "\n"; exp_continue }"Enter same passphrase again:" { send "\n"; exp_continue }}
eof
}if [ ! -f ~/.ssh/id_rsa.pub ]; thencreate_ssh_pub
fi#################################
# 复制 SSH 公钥到对应的主机上
#################################
config_copy_ssh(){echo "复制公钥到对应的主机上"/usr/bin/expect << eofset timeout 30spawn ssh-copy-id -i ~/.ssh/id_rsa.pub $1@$2expect {"Are you sure you want to continue connecting (yes/no)?" { send "yes\n"; exp_continue }"password:" { send "${ssh_passwd}\n"; exp_continue }}
eof
}for name in ${ssh_networkname[*]}; dotimeout 5 ssh root@${name} "echo ${name}: 'This is success!'"if [[ $? -ne 0 ]]; thenecho "复制公钥到: ${name}"config_copy_ssh root ${name} > /dev/nullfi
doneecho "SSH 免密登录设置完成。"
mysql 删除脚本
rm_mysql.sh
sudo systemctl stop mysql
sudo systemctl disable mysql
sudo userdel mysql
sudo groupdel mysql
sudo rm -rf /var/lib/mysql
sudo rm -rf /tmp/mysql.sock
sudo rm -rf /usr/bin/mysql
sudo rm -rf /tmp/mysql.sock
sudo rm -rf /usr/local/mysql
sudo rm -f /etc/mysql/my.cnf
sudo rm -f /etc/init.d/mysqld
sudo rm -f /etc/systemd/system/mysql.service
sudo rm -f /lib/systemd/system/mysql.service
sudo rm -f /etc/profile.d/mysql.sh
相关文章:
【Linux】Ubuntu 22.04 shell实现MySQL5.7 tar 一键安装
参考 https://blog.csdn.net/qq_35995514/article/details/134350572?spm1001.2014.3001.5501 在原作者基础上做了修改,加了一个删除原有mysql 的脚本 文章目录 一、安装下载**my.cnf 配置文件** 二、执行安装**install_mysql.sh 安装脚本**本机免密脚本 ssh_keyge…...
SQL Server开启网络访问
目前工作中很少用到SQL Server了,最近需要测试几个表,需要搭建一个SQL Server数据库服务,这里做个总结吧。 安装这里就不做详细介绍了,本文只介绍如何开启SQL Server网络访问。 1、云服务器安全组设置 如果是搭建在云服务器上&a…...
el-input设置type=‘number‘和v-model.number的区别
el-input设置typenumber’与设置.number修饰符的区别 1. 设置type‘number’ 使用el-input时想收集数字类型的数据,我们首先会想到typenumber,设置完type为number时会限制我们输入的内容只能为数字,不能为字符/汉字等非数字类型的数值&…...
6.第二阶段x86游戏实战2-理解程序流程
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…...
Netty笔记01-Netty的基本概念与用法
文章目录 1. 概述1.1 Netty 是什么?1.2 Netty 的特点1.3 Netty 的作者1.4 Netty 的地位1.5 Netty 的优势1.6 Netty 的工作原理1.7 Netty 的应用场景1.8 Netty 的重要组件 2. 第一个程序2.1 目标2.2 服务器端2.3 客户端2.4 流程梳理💡 提示 1. 概述 1.1 …...
OpenHarmony鸿蒙( Beta5.0)RTSPServer实现播放视频详解
鸿蒙开发往期必看: 一分钟了解”纯血版!鸿蒙HarmonyOS Next应用开发! “非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线!(从零基础入门到精通) “一杯冰美式的时间” 了解鸿蒙HarmonyOS Next应用开发路…...
QT使用事件事件和绘制事件实现简易时钟
这个时钟实现的底层原理主要是利用 Qt 的绘图机制和定时器。首先,设置固定大小的窗口,创建定时器并连接到槽函数,定时器每秒钟触发一次,触发窗口重绘。在paintEvent函数中,使用QPainter进行绘图,绘制圆形表…...
kubeadm方式安装k8s
一、安装环境 环境准备:(有阿里云)centos7 k8s-master 192.168.1.11 k8s-node1 192.168.1.22 k8s-node2 192.168.1.33 二、前期准备 在k8s-master主机 [rootk8s-master ~]# vim /etc/hosts…...
如何使用go生成可执行文件
在 Go 中生成可执行文件非常简单。你可以使用 go build或者go install 命令。以下是步骤: 1. 步骤 1.1. 打开终端,导航到你的 Go 项目目录 确保你在包含 main 包的目录中,通常这是项目的根目录或包含 main.go 文件的目录。 1.2. 运行 go …...
手写Promise
构造器的实现 const PENDING pending; const FULFILLED fulfilled; const REJECTED rejectedclass MyPromise{#state PENDING;#result undefined;constructor(executor){const resolve (data) > {this.#changeState(FULFILLED, data);};const reject (reason) > …...
深度学习云服务器免费使用教程
#云服务器# #深度学习# #人工智能# #计算机视觉# 本文为各位学习深度学习的入门选手而创建,降低深度学习的入门门槛。 谷歌云服务器Colab: T4GPU。限额,需要科学上网,不能使用终端。 谷歌云服务器地址:欢迎使用 C…...
使用ansible的剧本制作salt-master与salt-minion的安装与启动服务过程
虚拟机版本:Rocky Linux release 8.6 (Green Obsidian) 准备几台虚拟机 ipv4地址主机名192.168.137.13center192.168.137.14sp-1192.168.137.15sp-2192.168.137.16sp-3 一、center主机的配置 1.vim /etc/hosts 127.0.0.1 localhost localhost.localdomain loc…...
数据库sqlite3
用数据库函数完成数据的增删改查 增: 将要存储的信息录入到结构体中,再使用snprintf函数信息结合sqlite3命令语句使用sqlite3_exec函数完成插入。 int do_insert(sqlite3 *ppDb) {Worker Work;printf("输入插入的工号:");scanf("%d&qu…...
开发基础之Python 函数(Basic Python Functions for Development)
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…...
Django_Vue3_ElementUI_Release_001_项目初始化
1. 数据库 1.1 安装 https://blog.csdn.net/rbx508780/article/details/127176754 1.2 创建数据库 1.3 DBeaver可视化数据库 https://dbeaver.io/download/ 2 安装Python(3.9.12) 2.1 下载地址 https://www.python.org/downloads/release/python-3912/ 2.2 设定国内源 pip …...
MySQL之安装与基础知识
目录 一:在centos7上安装MySQL数据库 1.卸载默认存在的环境 2.配置mysql的yum源 3. 安装MySQL 4.登录mysql 5.设置MySQL的配置文件 二:MySQL基础知识 1.什么是数据库 2.主流数据库 3.服务器,数据库,表关系及使用案例 4…...
前端基础 | HTML基础:HTML结构,HTML常见标签
文章目录 HTML1、HTML结构1.1HTML标签1.1.1标签1.1.2标签含义 1.2HTML文件基本结构1.3标签层次结构1.4 快速生成代码框架 2、HTML常见标签2.1注释标签2.2标题标签:h1–h62.3段落标签:p2.4 换行标签:br2.5格式化标签2.6 图片标签:i…...
宏任务和微任务+超全面试真题
概念 微任务和宏任务是在异步编程中经常使用的概念,用于管理任务的执行顺序和优先级。 宏任务:setTimeout, setInterval,I/O 操作和 UI 渲染等。微任务: Promise 回调、async/await等 微任务通常比宏任务具有更高的优先级。 执…...
针对SVM算法初步研究
归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言📝心态决定高度,细节决定成败…...
Java中的`String`不可变性详解
在Java中,String类具有不可变性(immutable),这意味着一旦String对象被创建,它的值将无法更改。所有对字符串的修改操作(如拼接、替换等)实际上都会生成一个新的字符串对象,而不会修改…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究
摘要:在消费市场竞争日益激烈的当下,传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序,探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式,分析沉浸式体验的优势与价值…...
高抗扰度汽车光耦合器的特性
晶台光电推出的125℃光耦合器系列产品(包括KL357NU、KL3H7U和KL817U),专为高温环境下的汽车应用设计,具备以下核心优势和技术特点: 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计,确保在…...
C++ 类基础:封装、继承、多态与多线程模板实现
前言 C 是一门强大的面向对象编程语言,而类(Class)作为其核心特性之一,是理解和使用 C 的关键。本文将深入探讨 C 类的基本特性,包括封装、继承和多态,同时讨论类中的权限控制,并展示如何使用类…...
