#!/bin/bash

# 检查并卸载 MySQL 和 MariaDB 历史版本
echo "检查是否存在 MySQL 或 MariaDB 历史版本..."
mysql_packages=$(rpm -qa | grep mysql)
mariadb_packages=$(rpm -qa | grep mariadb)

if [ -n "$mysql_packages" ]; then
    echo "发现 MySQL 历史版本，开始卸载..."
    for package in $mysql_packages; do
        yum -y remove "$package"
    done
fi

if [ -n "$mariadb_packages" ]; then
    echo "发现 MariaDB 历史版本，开始卸载..."
    for package in $mariadb_packages; do
        yum -y remove "$package"
    done
fi

# 下载并安装 MySQL 8.0 的 repo 源
echo "下载 MySQL 8.0 的 repo 源..."
wget -4 https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
if [ $? -ne 0 ]; then
    echo "下载失败，请检查网络连接。"
    exit 1
fi
echo "下载成功，开始安装 repo 源..."
rpm -ivh mysql80-community-release-el7-3.noarch.rpm

# 更新 yum 缓存
echo "更新 yum 缓存..."
yum clean all
yum makecache

# 导入 MySQL GPG 密钥
echo "导入 MySQL GPG 密钥..."
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023

# 检查系统类型，如果是 CentOS Stream 则禁用 MySQL 模块
if grep -q "CentOS Stream" /etc/os-release; then
    echo "检测到 CentOS Stream 系统，禁用 MySQL 模块..."
    dnf module disable mysql -y
fi

# 安装 MySQL 服务器
echo "开始安装 MySQL 服务器..."
yum install mysql-community-server mysql-community -y
if [ $? -ne 0 ]; then
    echo "安装过程中可能出现 GPG 验证问题，尝试禁用 GPG 检查进行安装..."
    yum install mysql-community-server --nogpgcheck -y
    if [ $? -ne 0 ]; then
        echo "MySQL 安装失败，请检查错误信息。"
        exit 1
    fi
fi

# 查看当前安装的 MySQL 版本
echo "查看当前安装的 MySQL 版本..."
mysql -V

# 启动 MySQL 服务并设置开机自启
echo "启动 MySQL 服务并设置开机自启..."
systemctl start mysqld
systemctl enable mysqld

# 检查 MySQL 服务状态
echo "检查 MySQL 服务状态..."
systemctl status mysqld

# 获取初始密码
echo "获取 MySQL 初始密码..."
initial_password=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
if [ -n "$initial_password" ]; then
    echo "初始密码为: $initial_password"
else
    echo "未找到初始密码，请检查 /var/log/mysqld.log 文件。"
fi

# 进入 MySQL 并修改 root 用户密码
new_password="Chan1000w!"
echo "进入 MySQL 并修改 root 用户密码..."
mysql -u root -p"$initial_password" <<EOF
ALTER USER 'root'@'localhost' IDENTIFIED BY '$new_password';
FLUSH PRIVILEGES;
EOF

# 重启 MySQL 服务
echo "重启 MySQL 服务..."
systemctl stop mysqld
systemctl start mysqld

echo "MySQL 安装和配置完成。"