MySql自动安装脚本
一、脚本安装流程
1. 添加MySQL的Repository
- 使用
wget命令从MySQL官方网站下载Yum Repository的RPM包。 - 使用
rpm -ivh命令安装下载的RPM包,以添加MySQL的Yum Repository。
2. 安装mysql-community-server
- 使用
yum install -y mysql-community-server --nogpgcheck命令安装MySQL服务器。 - 安装过程中会自动安装MySQL的依赖包。
3. 启动MySQL服务,获取临时密码
- 使用
systemctl start mysqld命令启动MySQL服务。 - 使用
systemctl enable mysqld命令设置MySQL服务开机自启动。 - 从MySQL日志文件
/var/log/mysqld.log中提取临时密码。
4. 修改密码
- 使用
mysql --connect-expired-password -uroot -p"$TEMP_PASSWD"命令登录MySQL。 - 使用
ALTER USER语句修改root用户的密码。 - 验证新密码是否生效。
二、卸载MySQL流程
1. 停止MySQL服务
- 使用
systemctl stop mysqld命令停止MySQL服务。
2. 卸载MySQL相关包
- 使用
yum remove -y命令卸载所有与MySQL相关的包,包括mysql-community-client、mysql-community-server等。
3. 删除MySQL数据和日志文件
- 使用
rm -rf命令删除MySQL的数据目录/var/lib/mysql、日志文件/var/log/mysqld.log等。
4. 删除MySQL配置文件
- 使用
rm -rf命令删除MySQL的配置文件/etc/my.cnf、/etc/my.cnf.d等。
5. 清理Yum Repository信息
- 使用
find命令删除/etc/yum.repos.d/目录下所有与MySQL相关的Repository文件。
6. 清理Yum缓存
- 使用
yum clean all命令清理Yum缓存。
三、Shell脚本
#!/bin/bashset -e# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # 恢复默认颜色# 日志文件路径
LOG_FILE="/var/log/mysql_install.log"# MySQL Yum Repository下载URL
DOWNLOAD_URL="https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm"
RPM_FILE=$(basename "$DOWNLOAD_URL")# MySQL root密码
PASSWD='YourNewRootPasswordHere' # 请替换为实际的新密码# 日志记录函数
log() {echo -e "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE"
}# 错误处理函数
error_exit() {log "${RED}ERROR: $1${NC}"exit 1
}# 安装MySQL
install_mysql() {log "${GREEN}Adding MySQL Yum Repository...${NC}"wget -c "$DOWNLOAD_URL" || error_exit "Failed to download MySQL Yum Repository."if rpm -ivh "$RPM_FILE"; thenlog "${GREEN}Successfully added MySQL Yum Repository.${NC}"elseerror_exit "Failed to add MySQL Yum Repository."filog "${GREEN}Updating Yum cache...${NC}"yum clean all || error_exit "Failed to clean Yum cache."if yum makecache; thenlog "${GREEN}Yum cache updated successfully.${NC}"elseerror_exit "Failed to update Yum cache."filog "${GREEN}Installing MySQL...${NC}"if yum install -y mysql-community-server --nogpgcheck; thenlog "${GREEN}MySQL installed successfully.${NC}"elseerror_exit "Failed to install MySQL."filog "${GREEN}Starting MySQL service...${NC}"if systemctl start mysqld; thenlog "${GREEN}MySQL service started successfully.${NC}"elseerror_exit "Failed to start MySQL service."fisystemctl enable mysqldsleep 5TEMP_PASSWD=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')log "${YELLOW}Temporary password is: $TEMP_PASSWD${NC}"log "${GREEN}Changing root password...${NC}"mysql --connect-expired-password -uroot -p"$TEMP_PASSWD" -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$PASSWD'; flush privileges;" &>/dev/null || error_exit "Failed to change root password."if mysql -uroot -p"$PASSWD" -e "status" &>/dev/null; thenlog "${GREEN}MySQL installation completed and root password changed successfully.${NC}"log "${GREEN}New root password is: $PASSWD${NC}"elseerror_exit "Failed to change root password, please check manually."firm -f "$RPM_FILE"log "${GREEN}Installation script completed successfully.${NC}"
}# 卸载MySQL
uninstall_mysql() {if [ "$EUID" -ne 0 ]; thenecho -e "${RED}Please run as root${NC}"exit 1fiMYSQL_PACKAGES=(mysql-community-clientmysql-community-client-pluginsmysql-community-commonmysql-community-icu-data-filesmysql-community-libsmysql-community-servermysql80-community-release)echo -e "${YELLOW}Stopping MySQL service...${NC}"systemctl stop mysqld || echo -e "${YELLOW}MySQL service already stopped.${NC}"for pkg in "${MYSQL_PACKAGES[@]}"; doif rpm -q "$pkg" &>/dev/null; thenecho -e "${YELLOW}Uninstalling $pkg...${NC}"yum remove -y "$pkg"elseecho -e "${YELLOW}$pkg is not installed.${NC}"fidoneecho -e "${YELLOW}Deleting MySQL data and log files...${NC}"rm -rf /var/lib/mysql /var/log/mysqld.log /var/run/mysqldecho -e "${YELLOW}Deleting MySQL configuration files...${NC}"rm -rf /etc/my.cnf /etc/my.cnf.d /etc/mysqlecho -e "${YELLOW}Cleaning up Yum repository information...${NC}"find /etc/yum.repos.d/ -type f -name "mysql-community*" -exec rm -f {} \;echo -e "${YELLOW}Cleaning Yum cache...${NC}"yum clean allecho -e "${GREEN}MySQL and its databases have been successfully removed from your system.${NC}"
}# 用户界面
show_menu() {echo -e "${GREEN}===================================${NC}"echo -e "${GREEN} MySQL Installation/Uninstallation ${NC}"echo -e "${GREEN}===================================${NC}"echo -e "1. Install MySQL"echo -e "2. Uninstall MySQL"echo -e "3. Exit"echo -e "${GREEN}===================================${NC}"read -p "Please choose an option (1/2/3): " choicecase $choice in1) install_mysql ;;2) uninstall_mysql ;;3) exit 0 ;;*) echo -e "${RED}Invalid option, please try again.${NC}" && show_menu ;;esac
}# 主函数
main() {show_menu
}# 执行主函数
main
四、脚本说明
- 日志记录:脚本中的所有操作都会记录到
/var/log/mysql_install.log文件中,方便后续排查问题。 - 错误处理:如果某个步骤失败,脚本会立即停止并输出错误信息。
- 用户界面:脚本提供了一个简单的用户界面,用户可以选择安装或卸载MySQL。
- 卸载功能:卸载功能会彻底删除MySQL及其相关文件,确保系统干净。
五、使用说明
-
安装MySQL:
- 运行脚本后选择
1,脚本会自动下载并安装MySQL,设置root密码。
- 运行脚本后选择
-
卸载MySQL:
- 运行脚本后选择
2,脚本会卸载MySQL并删除所有相关文件和配置。
- 运行脚本后选择
-
退出脚本:
- 运行脚本后选择
3,脚本会直接退出。
- 运行脚本后选择
代码仓库地址:https://gitee.com/lv-tinghu/linux-script.git
相关文章:
MySql自动安装脚本
一、脚本安装流程 1. 添加MySQL的Repository 使用wget命令从MySQL官方网站下载Yum Repository的RPM包。使用rpm -ivh命令安装下载的RPM包,以添加MySQL的Yum Repository。 2. 安装mysql-community-server 使用yum install -y mysql-community-server --nogpgchec…...
STM32-I2C通信外设
目录 一:I2C外设简介 二:I2C外设数据收发 三:I2C的复用端口 四:主机发送和接收 五:硬件I2C读写MPU6050 相关函数: 1.I2C_ GenerateSTART 2.I2C_ GenerateSTOP 3.I2C_ AcknowledgeConfig 4.I2C…...
【脚本】Linux一键扩大虚拟内存的大小
Linux增加虚拟内存其实很简单 就那几个命令,free、mkswap、swapon 但是方便起见我写成了脚本 使用方法 进入你的目录, nano ./install_swap.sh 下面的脚本全文复制,粘贴进去之后,按ctrlx后按y保存 然后运行以下命令 sudo bash …...
信号隔离器 0-20mA/0-10V模拟信号隔离模块变送器 一进二出高精度
信号隔离器 0-20mA/0-10V模拟信号隔离模块变送器 一进二出高精度https://item.taobao.com/item.htm?ftt&id766022047828 型号 一进二出 0-20mA 转0-20mA/0-10V MS-C12 一进二出 0-10V 转 0-20mA/0-10V MS-V12 信号隔离器 单组输出 MS-C1/V1 双组输出 MS-C12/V12 用于…...
Nat. Methods | scPerturb——单细胞扰动数据的标准化资源与统计分析方法
《Nature Methods》提出scPerturb资源平台,整合44个单细胞扰动数据集(涵盖转录组、表观组、蛋白组读值),并通过能量统计量(E-statistics)量化扰动效应,旨在解决单细胞扰动数据的互操作性差、缺乏…...
【易康eCognition实验教程】005:影像波段组合显示与单波段显示
文章目录 一、加载多波段影像二、单波段显示三、彩色显示一、加载多波段影像 二、单波段显示 如果导入的影像数据具有三个或者更多的波段,影像场景将自动以RGB(红绿蓝)模式默认显示,如上图所示。在视图设置(View Settings)窗口中使用单波段灰度显示(Single LayuerGrays…...
使用Process Explorer、Dependency Walker和PE信息查看工具快速排查dll动态库因库与库版本不一致导致的加载失败问题
目录 1、问题说明 2、使用Process Explorer查看目标dll动态库有没有动态加载起来 3、使用Dependency Walker查看xxpadll.dll库的库依赖关系,找到xxpadll.dll加载失败的原因 4、使用PE信息查看工具查看目标dll库的时间戳 5、关于xxsipstack2.dll中调用xxdatanet…...
Git的命令学习——适用小白版
浅要了解一下Git是什么: Git是目前世界上最先进的的分布式控制系统。Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异。Git 并不保存这些前后变化的差异数据。实际上…...
如何安全处置旧设备?
每年,数百万台旧设备因老化、故障或被新产品取代而被丢弃,这些设备上存储的数据可能带来安全风险。 如果设备没有被正确删除数据,这些数据往往仍可被恢复。因此,安全处置旧设备至关重要。 旧设备可能包含的敏感数据 旧设备中可能…...
Java 学习记录:基础到进阶之路(一)
今天,让我们深入到 Java 项目构建、基础语法及核心编程概念的领域,一探究竟。 软件安装及环境配置请查看之前更新的博客有着详细的介绍: IDEA软件安装&环境配置&中文插件-CSDN博客 目录 1.Java 项目构建基础 1.项目中的 SRC 目录…...
3.3-3.9 蓝桥杯备赛周记
斜率关系 14届省赛 ![[Pasted image 20250205145241.png]] NE555频率解算温度 频率范围外 无效 unsigned int Freq; if(Freq<200) {humnity0;} else if(Freq>2000) {humnity0;} else{ humnity80.0/1800.0 *(float)(Freq-200)10.0;} 斜率计算题 需要类型转换 和数据需要…...
系统架构设计师—系统架构设计篇—软件架构风格
文章目录 概述经典体系结构风格数据流风格批处理管道过滤器对比 调用/返回风格主程序/子程序面向对象架构风格层次架构风格 独立构件风格进程通信事件驱动的系统 虚拟机风格解释器基于规则的系统 仓库风格(数据共享风格)数据库系统黑板系统超文本系统 闭…...
工厂模式加策略模式 -- 具体实现
这里写目录标题 定义接口定义抽象类定义主处理器分支处理器定义工厂demo 定义接口 public interface EntityHandler extends InitializingBean {MatchContentDTO match(MatchEntityDTO matchEntityDTO);String supportEntityType(); }定义抽象类 public abstract class Abstr…...
STM32---FreeRTOS消息队列
一、简介 1、队列简介: 队列:是任务到任务,任务到中断、中断到任务数据交流的一种机制(消息传递)。 FreeRTOS基于队列,实现了多种功能,其中包括队列集、互斥信号量、计数型信号量、二值信号量…...
python-leetcode-删掉一个元素以后全为 1 的最长子数组
1493. 删掉一个元素以后全为 1 的最长子数组 - 力扣(LeetCode) 可以使用滑动窗口的方式来解决这个问题。我们要找到最长的全 1 子数组,但必须删除一个元素,因此可以将问题转化为寻找最多包含一个 0 的最长子数组。 解题思路 使用双指针(滑动窗口),维护窗口内最多包含一…...
【赵渝强老师】PostgreSQL的模板数据库
在PostgreSQL中,创建数据库时实际上通过拷贝一个已有数据库进行工作的。在默认情况下,将拷贝名为template1的标准系统数据库。所以该数据库是创建新数据库的“模板”。如果为template1数据库增加对象,这些对象将被拷贝到后续创建的用户数据库…...
vue2中,在table单元格上右键,对行、列的增删操作(模拟wps里的表格交互)
HTML <template><div><divclass"editable-area"v-html"htmlContent"contenteditableblur"handleBlur"contextmenu.prevent"showContextMenu"></div><button click"transformToMd">点击转成M…...
使用DeepSeek+蓝耘快速设计网页简易版《我的世界》小游戏
前言:如今,借助先进的人工智能模型与便捷的云平台,即便是新手开发者,也能开启创意游戏的设计之旅。DeepSeek 作为前沿的人工智能模型,具备强大的功能与潜力,而蓝耘智算云平台则为其提供了稳定高效的运行环境…...
解决微信小程序中调用流式接口,处理二进制数据时 TextDecoder 不兼容的问题
问题复现 最近在开发一个 AI 问答小程序时,由于接口返回的是流式二进制数据,因此我使用了 TextDecoder 的 decode 方法将二进制数据转换为文本。在开发环境中,数据处理一直没有问题,但在真机测试及上线后,发现调用接口…...
DeepSeek与QWQ大模型对比
题目为《deepseek和qwq大模型对比》1000字 DeepSeek与QWQ大模型对比 引言 在人工智能领域,大模型的发展日新月异。DeepSeek和QWQ作为两种具有代表性的大模型,各自在技术架构、应用场景和性能表现上展现出独特优势。本文将从多个维度对这两种模型进行详细…...
Java 大视界 -- Java 大数据在智慧农业农产品质量追溯与品牌建设中的应用(124)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
c++介绍信号六
信号量是c中实现对有限资源访问控制,现成通过信号量获得对资源访问的许可。可用资源大于0,线程可以对资源进行访问,此时计数器减1。当计数器为0时,不可访问资源,线程进入等待。当资源释放时,线程结束等待&a…...
DeepSeek 本地部署全流程指南:畅享专属AI体验
DeepSeek本地部署全流程指南:畅享专属AI体验 一、部署优势剖析 在本地部署DeepSeek大模型,能带来诸多好处。一方面,数据隐私更有保障,所有运算都在本地独立完成,无需联网,有效避免了数据泄露的风险。另一…...
GStreamer —— 2.18、Windows下Qt加载GStreamer库后运行 - “播放教程 6:音频可视化“(附:完整源码)
运行效果 介绍 GStreamer 带有一组将音频转换为视频的元素。他们 可用于科学可视化或为您的音乐增添趣味 player 的本教程展示了: • 如何启用音频可视化 • 如何选择可视化元素 启用音频可视化实际上非常简单。设置相应的标志,当纯音频流为 found&#…...
IP 地址与端口号:网络通信的双重坐标解析
IP 地址与端口号:网络通信的双重坐标解析 在互联网广袤无垠的世界里,数据恰似无数灵动的信息精灵,在复杂的网络脉络中穿梭往来。而确保这些数据能够精准无误地抵达目的地的关键,便是两个至关重要的核心标识符:IP 地址…...
用Deepseek写一个 HTML 和 JavaScript 实现一个简单的飞机游戏
大家好!今天我将分享如何使用 HTML 和 JavaScript 编写一个简单的飞机游戏。这个游戏的核心功能包括:控制飞机移动、发射子弹、敌机生成、碰撞检测和得分统计。代码简洁易懂,适合初学者学习和实践。 游戏功能概述 玩家控制:使用键…...
【从零开始学习计算机科学】操作系统(三)进程的互斥、同步与通信
【从零开始学习计算机科学】操作系统(三)进程的互斥、同步与通信 进程的互斥、同步与通信进程的互斥进程的同步进程的通信进程的互斥、同步与通信 进程的互斥 两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域,否则可能发生与时间有关的错误,这种现象被称…...
Android Compose MutableInteractionSource介绍
在 Android 开发中,Compose 是 Google 推出的现代化 UI 工具包,它让开发者能够更简洁高效地构建应用界面。而 MutableInteractionSource 是 Compose 中一个重要的组件,它可以帮助你处理用户与界面交互时的状态变化,尤其在处理交互…...
[杂学笔记] TCP和UDP的区别,对http接口解释 , Cookie和Session的区别 ,http和https的区别 , 智能指针 ,断点续传
文章目录 1. TCP和UDP的区别2. 对http接口解释3. Cookie和Session的区别4. http和https的区别5. 智能指针6.断点续传 1. TCP和UDP的区别 tcp的特点: 面向连接,可靠性高,全双工,面向字节流udp特点:无连接,不…...
Ubuntu 源码安装 Qt5
1.开发背景 Ubuntu 下安装指定版本的 Qt,最新的Qt官方已经不支持 Qt5.15.2 版本以下版本,所以有必要用旧的源码编译 Qt 库。 2.开发需求 源码安装 Qt5.12.2 3.开发环境 开发环境:Ubuntu18.04 目标版本:Qt5.12.2 4.实现步骤 4…...
