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