mysql8安装脚本

#!/bin/bash

PACKAGE_NAME=”mysql-8.0.27-el7-x86_64.tar.gz”

DOWNLOAD_URL=”https://mirrors.aliyun.com/mysql/MySQL-8.0/${PACKAGE_NAME}”

# 颜色定义(可选)

RED=’\033[0;31m’

GREEN=’\033[0;32m’

NC=’\033[0m’ # No Color

# 安装依赖

install_dependencies() {

    echo “安装依赖包…”

    yum -y install libaio numactl-libs ncurses-compat-libs wget

    if [ $? -ne 0 ]; then

        echo -e “${RED}依赖包安装失败${NC}”

        exit 1

    fi

}

# 创建用户和组

create_mysql_user() {

    echo “创建MySQL用户和组…”

    # 检查组是否存在

    if ! getent group mysql > /dev/null 2>&1; then

        groupadd -r mysql

    fi

    # 检查用户是否存在

    if ! id mysql > /dev/null 2>&1; then

        useradd -r -g mysql -s /sbin/nologin mysql

    fi

}

# 下载解压安装包

Download() {

    echo “检查安装包…”

    # 修正:if条件要有空格

    if [ -f “./${PACKAGE_NAME}” ]; then

        echo “安装包已存在”

    else

        echo “安装包不存在,开始下载安装包…”

        wget ${DOWNLOAD_URL}

        if [ $? -ne 0 ]; then

            echo -e “${RED}下载失败,请检查网络或URL${NC}”

            exit 1

        fi

    fi

    echo “开始解压…”

    # 检查目标目录是否存在

    if [ ! -d “/usr/local” ]; then

        mkdir -p /usr/local

    fi

    tar xf ${PACKAGE_NAME} -C /usr/local/

    if [ $? -ne 0 ]; then

        echo -e “${RED}解压失败${NC}”

        exit 1

    fi

}

# 安装配置MySQL

Install() {

    echo “开始安装配置MySQL…”

    cd /usr/local/

    # 创建软链接

    if [ -d “mysql-8.0.27-el7-x86_64” ]; then

        ln -sf mysql-8.0.27-el7-x86_64 mysql

    else

        echo -e “${RED}MySQL目录不存在,安装失败${NC}”

        exit 1

    fi

    # 设置目录权限

    chown -R root:root mysql/

    # 设置环境变量

    echo ‘export PATH=/usr/local/mysql/bin:$PATH’ > /etc/profile.d/mysql.sh

    source /etc/profile.d/mysql.sh

    # 创建配置文件 – 使用<<-EOF去掉开头的制表符

    cat > /etc/my.cnf <<-‘EOF’

[mysqld]

datadir=/data/mysql

skip_name_resolve=1

socket=/data/mysql/mysql.sock

log-error=/data/mysql/mysql.log

pid-file=/data/mysql/mysql.pid

[client]

socket=/data/mysql/mysql.sock

EOF

    # 创建数据目录并设置权限

    mkdir -pv /data/mysql

    chown -R mysql:mysql /data/mysql

    chmod 750 /data/mysql

    # 初始化数据库

    echo “初始化数据库…”

    mysqld –initialize –user=mysql –datadir=/data/mysql

    if [ $? -ne 0 ]; then

        echo -e “${RED}数据库初始化失败${NC}”

        exit 1

    fi

    # 获取初始密码

    if [ -f “/data/mysql/mysql.log” ]; then

        temp_password=$(grep ‘temporary password’ /data/mysql/mysql.log | awk ‘{print $NF}’)

        if [ -n “$temp_password” ]; then

            echo -e “${GREEN}初始临时密码: ${temp_password}${NC}”

            echo “请妥善保存并立即修改密码”

        fi

    fi

    # 创建启动脚本

    if [ -f “/usr/local/mysql/support-files/mysql.server” ]; then

        cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

        chmod +x /etc/init.d/mysqld

        chkconfig –add mysqld

    fi

    # 启动服务

    echo “启动MySQL服务…”

    systemctl start mysqld.service

    if [ $? -eq 0 ]; then

        # 检查服务是否真的在运行

        sleep 3

        if systemctl is-active –quiet mysqld; then

            echo -e “${GREEN}MySQL 安装成功!${NC}”

            echo “”

            echo “重要信息:”

            echo “1. MySQL服务已启动”

            echo “2. 安装目录: /usr/local/mysql”

            echo “3. 数据目录: /data/mysql”

            echo “4. 配置文件: /etc/my.cnf”

            echo “5. 启动脚本: /etc/init.d/mysqld”

            echo “6. 临时密码: ${temp_password:-请查看/data/mysql/mysql.log}”

            echo “”

            echo “后续操作:”

            echo “1. 请执行命令 source /etc/profile.d/mysql.sh”

            echo “2. 修改root密码: mysql -uroot -p’${temp_password}’ -e \”ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘新密码’;\””

            echo “3. 设置开机自启: systemctl enable mysqld”

        else

            echo -e “${YELLOW}MySQL服务启动但可能未正常运行,请检查日志${NC}”

            echo “查看日志: tail -f /data/mysql/mysql.log”

        fi

    else

        echo -e “${RED}MySQL安装失败${NC}”

        echo “请检查错误日志: tail -f /data/mysql/mysql.log”

        exit 1

    fi

}

# 主执行流程

main() {

    echo “===== MySQL 8.0.27 安装脚本 =====”

    # 检查是否以root运行

    if [ “$(id -u)” -ne 0 ]; then

        echo “请使用root权限运行此脚本”

        exit 1

    fi

    # 执行安装步骤

    install_dependencies

    create_mysql_user

    Download

    Install

    echo “===== 安装完成 =====”

}

# 执行主函数

main


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注