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-clientmysql-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及其相关文件,确保系统干净。

五、使用说明

  1. 安装MySQL

    • 运行脚本后选择1,脚本会自动下载并安装MySQL,设置root密码。
  2. 卸载MySQL

    • 运行脚本后选择2,脚本会卸载MySQL并删除所有相关文件和配置。
  3. 退出脚本

    • 运行脚本后选择3,脚本会直接退出。

代码仓库地址:https://gitee.com/lv-tinghu/linux-script.git

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用pdf.js+百度翻译实现PDF翻译,创建中文PDF

基于JavaScript的PDF文档解析与智能翻译系统开发实践 一、功能预览 1.1 PDF加载 1.2 PDF翻译 二、系统架构设计 2.1 PDF智能翻译系统架构设计 层级模块名称功能描述技术实现呈现层Canvas渲染器PDF文档可视化渲染PDF.js + 动态视口计算 + 矩阵变换

虚函数和虚表的原理是什么?

虚函数是一个使用virtual关键字声明的成员函数,在基类中声明虚函数,在子类中可以使用override重写该函数。虚函数根据指针或引用指向的实际对象调用,实现运行时的多态。 虚函数表(虚表)是一个用于存储虚函数地址的数组…

运行OpenManus项目(使用Conda)

部署本项目需要具备一定的基础:Linux基础、需要安装好Anaconda/Miniforge(Python可以不装好,直接新建虚拟环境的时候装好即可),如果不装Anaconda或者Miniforge,只装过Python,需要确保Python是3.…

vulnhub靶场之【digitalworld.local系列】的vengeance靶机

前言 靶机:digitalworld.local-vengeance,IP地址为192.168.10.10 攻击:kali,IP地址为192.168.10.6 kali采用VMware虚拟机,靶机选择使用VMware打开文件,都选择桥接网络 这里官方给的有两种方式&#xff…

纯html文件实现目录和文档关联

目录结构 效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>项目结题报告</title><style lang"scss">::-webkit-scrollbar {width: 6px;height: 6px;}::-webkit-scro…

计算机网络——交换机

一、什么是交换机&#xff1f; 交换机&#xff08;Switch&#xff09;是局域网&#xff08;LAN&#xff09;中的核心设备&#xff0c;负责在 数据链路层&#xff08;OSI第二层&#xff09;高效转发数据帧。它像一位“智能交通警察”&#xff0c;根据设备的 MAC地址 精准引导数…

Primer - 自适应学习,AI学习工具

android Primer - 自适应学习 链接&#xff1a;https://pan.xunlei.com/s/VOKv1kIghHXGSbjg3PIZnhWHA1?pwdwfn6# 【软件说明】&#xff1a;采用先进的自适应学习算法&#xff0c;能够迅速识别您当前的知识水平&#xff0c;并推荐新的学习主题。经过初步评估后&#xff0c;您…

【Vue3 Element UI - Plus + Tyscript 实现Tags标签输入及回显】

Vue3 Element Plus TypeScript 实现 Tags 标签输入及回显 在开发后台管理系统或表单页面时&#xff0c;动态标签&#xff08;Tags&#xff09; 是一个常见的功能需求。用户可以通过输入框添加标签&#xff0c;并通过关闭按钮删除标签&#xff0c;同时还需要支持标签数据的提…

程序员学习强化学习之基本概念的数学表达

基本概念 迷宫游戏为例 状态(State)&#xff1a;S {s1, . . . , s9} 行动(Action)&#xff1a;A {a1, . . . , a5} 状态转移(State transition)&#xff1a; 奖励(Reward)&#xff1a;r(s, a) 是 s和a的函数 序列(Trajectories) 策略1的序列&#xff1a; 策略2的序列&…

达梦数据库查看字符集编码

select SF_GET_UNICODE_FLAG(); 返回 0 代表数据库字符集编码为 GB18030 1 代表数据库字符集编码为 UTF-8 2 代表数据库字符集编码为韩文字符集 EUC-KR

【数据结构与算法】Java描述:第二节:LinkedList 链表

一、链表的概念与结构 1.1 概念&#xff1a; 通俗的来说&#xff0c;链表是由一个个结点连接起来的就叫链表。 1.2 结构&#xff1a; 链表存储的数据 在 物理上是不一定连续的&#xff0c;它是由前面链接后面&#xff0c;一个个连起来的。 二、Java底层的 LinkedList 2.1…

[Java基础-线程篇]7_线程设计模式与总结

摘要&#xff1a;懒汉单例模式怎么变得线程安全&#xff1f;Master-Worker归并模式&#xff0c;工作窃取算法。Java线程相关源码使用了什么设计模式&#xff1f; 资料引用&#xff1a;《Java高并发核心编程卷2》 目录 线程安全的单例模式 Master-Worker模式 工作窃取算法 …

RabbitMQ高级特性--消息确认机制

目录 一、消息确认 1.消息确认机制 2.手动确认方法 二、代码示例 1. AcknowledgeMode.NONE 1.1 配置文件 1.2 生产者 1.3 消费者 1.4 运行程序 2.AcknowledgeMode.AUTO 3.AcknowledgeMode.MANUAL 一、消息确认 1.消息确认机制 生产者发送消息之后&#xff0c;到达消…

NodeJS学习笔记

NodeJS软件安装 node环境安装&#xff1a; https://nodejs.org 安装好后的node通常在C:\Program Files\nodejs验证安装是否成功 node -v npm -v 进入REPL模式命令行模式 nodeNodeJS在REPL模式和编辑器使用 windos在dos下常用命令 windos命令&#xff1a; 1、cmd dos系统2、…

Unity 实现在模型表面进行绘画

Texture2D-SetPixels32 - Unity 脚本 API 实现思路 从笔尖位置发射射线获取画纸上碰撞位置的UV 纹理坐标以确认笔迹位置&#xff0c;射线检查碰撞的最大距离即笔尖距离画纸的最大距离&#xff0c;利用Texture2D.SetPixels32 实现对画纸贴图颜色的修改。 核心代码 发射一条以…

2008-2024年中国手机基站数据/中国移动通信基站数据

2008-2024年中国手机基站数据/中国移动通信基站数据 1、时间&#xff1a;2008-2024年 2、来源&#xff1a;OpenCelliD 3、指标&#xff1a;网络类型、网络代数、移动国家/地区、移动网络代码、区域代码、小区标识、单元标识、坐标经度、坐标纬度、覆盖范围、测量样本数、坐标…

LeetCode Hot100刷题——反转链表(迭代+递归)

206.反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 3&#…

Android项目优化同步速度

最近项目需要使用ffmpeg&#xff0c;需要gradle配置引入ffmpeg库&#xff0c;发现原来通过google官方的代码仓&#xff0c;下载太慢了&#xff0c;每秒KB级别的速度。&#xff08;之前下gradle/gradle plugin都不至于这么慢&#xff09;&#xff0c;于是想到配置国内镜像源来提…

Upload-Labs-Linux 1-20

前端校验绕过&#xff1a;pass 01 两种思路&#xff1a;1.通过抓包&#xff0c;修改后缀 2.前端禁用js绕过前端后缀检验 首先写一个木马&#xff0c;改为图片格式GIF89a<?php eval($_POST[cmd])?>抓包之后改为PHP格式&#xff1a; 使用蚁剑连接木马&#xff0c;第一次尝…

爬虫案例九js逆向爬取CBA中国篮球网

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、CBA网站分析二、代码 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 爬取CBA中国篮球网 提示&#xff1a;以下是本篇文章正文内容…