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

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/bash

set -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"; then
    log "${GREEN}Successfully added MySQL Yum Repository.${NC}"
  else
    error_exit "Failed to add MySQL Yum Repository."
  fi

  log "${GREEN}Updating Yum cache...${NC}"
  yum clean all || error_exit "Failed to clean Yum cache."
  if yum makecache; then
    log "${GREEN}Yum cache updated successfully.${NC}"
  else
    error_exit "Failed to update Yum cache."
  fi

  log "${GREEN}Installing MySQL...${NC}"
  if yum install -y mysql-community-server --nogpgcheck; then
    log "${GREEN}MySQL installed successfully.${NC}"
  else
    error_exit "Failed to install MySQL."
  fi

  log "${GREEN}Starting MySQL service...${NC}"
  if systemctl start mysqld; then
    log "${GREEN}MySQL service started successfully.${NC}"
  else
    error_exit "Failed to start MySQL service."
  fi

  systemctl enable mysqld
  sleep 5

  TEMP_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; then
    log "${GREEN}MySQL installation completed and root password changed successfully.${NC}"
    log "${GREEN}New root password is: $PASSWD${NC}"
  else
    error_exit "Failed to change root password, please check manually."
  fi

  rm -f "$RPM_FILE"
  log "${GREEN}Installation script completed successfully.${NC}"
}

# 卸载MySQL
uninstall_mysql() {
  if [ "$EUID" -ne 0 ]; then
    echo -e "${RED}Please run as root${NC}"
    exit 1
  fi

  MYSQL_PACKAGES=(
    mysql-community-client
    mysql-community-client-plugins
    mysql-community-common
    mysql-community-icu-data-files
    mysql-community-libs
    mysql-community-server
    mysql80-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[@]}"; do
    if rpm -q "$pkg" &>/dev/null; then
      echo -e "${YELLOW}Uninstalling $pkg...${NC}"
      yum remove -y "$pkg"
    else
      echo -e "${YELLOW}$pkg is not installed.${NC}"
    fi
  done

  echo -e "${YELLOW}Deleting MySQL data and log files...${NC}"
  rm -rf /var/lib/mysql /var/log/mysqld.log /var/run/mysqld

  echo -e "${YELLOW}Deleting MySQL configuration files...${NC}"
  rm -rf /etc/my.cnf /etc/my.cnf.d /etc/mysql

  echo -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 all

  echo -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): " choice
  case $choice in
    1) 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,脚本会直接退出。

相关文章:

  • JavaEE进阶(2) Spring Web MVC: Session 和 Cookie
  • BroadcastReceiver的应用
  • 算法 之 堆
  • Rat工具:XiebroC2 一款国产C2工具简单使用介绍
  • 第四章:反射-Reflecting Your World《Unity Shaders and Effets Cookbook》
  • 2025.3.3-2025.3.9学习周报
  • 零基础上手Python数据分析 (1):Windows环境配置与开发工具,开启数据科学之旅!
  • Spring Cloud Gateway 笔记
  • 微软程序的打包格式MSIX
  • [项目]基于FreeRTOS的STM32四轴飞行器: 五.Motor驱动
  • Llama factory微调后的模型怎么通过ollama发布
  • Android 调用c++报错 exception of type std::bad_alloc: std::bad_alloc
  • 防火墙IPSec (无固定IP地址---一对多)
  • C++之vector类(超详解)
  • 【UCB CS 61B SP24】Lecture 28 - Tries 学习笔记
  • 使用 Elastic-Agent 或 Beats 将 Journald 中的 syslog 和 auth 日志导入 Elastic Stack
  • Go语言实战,HTTP和gRPC多服务启动与关闭的最佳实践
  • aws(学习笔记第三十二课) 深入使用cdk(API Gateway + event bridge)
  • 数据结构常见面试题
  • Java后端高频面经——计算机网络
  • 福建省政府网站建设与管理/高端网站定制公司
  • 山西网络网站建设销售公司/网络宣传怎么做
  • 武汉优联网站建设/巩义网络推广公司
  • 官方网站建设工程规划不受容积率限制吗?/抖音搜索seo
  • 百度上开个网站怎么做/贵港seo
  • 韩国设计app网站有哪些/舆情服务网站