×

linux运维操作——mysql编译安装脚本自动安装

linux运维

linux运维操作——mysql编译安装脚本自动安装

a_lyx a_lyx 发表于2025-04-28 浏览111 评论0
#!/bin/bash
#Description : MySQL8.4.4 Install Script 
#Author      : lyx
#Version     : 2.0_01

function MySQL_User() {
    id mysql >/dev/null 2>&1
    if [ "$?" != "0" ]; then
        useradd -s /sbin/nologin mysql >/dev/null 2>&1
    fi
}

function Create_DIR() {
    DIRECTORY=("/home/mysql/data" "/home/mysql/mysqlbase" "/home/mysql/mysqllog")
    for i in "${DIRECTORY[@]}"; do
        if [ ! -d "${i}" ]; then
            mkdir -p "${i}"
        fi
    done
}

function DOWNLOAD_MYSQL() {
    if [ ! -f "/root/mysql-8.4.4-linux-glibc2.28-x86_64.tar.xz" ]; then
        echo "Downloading MySQL 8.4.4..."
        wget https://dev.mysql.com/get/Downloads/MySQL-8.4/mysql-8.4.4-linux-glibc2.28-x86_64.tar.xz -P /root/
        if [ "$?" != "0" ]; then
            echo "Failed to download MySQL 8.4.4."
            exit 1
        fi
    else
        echo "MySQL 8.4.4 package already exists."
    fi
}

function INSTALL() {
    chown -R mysql:mysql /home/mysql/{data,mysqlbase,mysqllog}
    tar -xvf /root/mysql-8.4.4-linux-glibc2.28-x86_64.tar.xz -C /home/mysql/mysqlbase
    mv /home/mysql/mysqlbase/mysql-8.4.4-linux-glibc2.28-x86_64 /home/mysql/mysqlbase/mysql-8.4.4
    /home/mysql/mysqlbase/mysql-8.4.4/bin/mysqld --initialize --user=mysql --basedir=/home/mysql/mysqlbase/mysql-8.4.4/ --datadir=/home/mysql/data/
    if [ "$?" != "0" ]; then
        echo "An error occurs during the installation of the MySQL Database Service."
        exit 1
    fi
    if [ -f /etc/my.cnf ]; then
        rm -rf /etc/my.cnf
    fi
    mv /root/my.cnf /etc/
    if [ -f /etc/init.d/mysqld ]; then
        rm -rf /etc/init.d/mysqld
    fi
    cp /home/mysql/mysqlbase/mysql-8.4.4/support-files/mysql.server /etc/init.d/mysqld
    if [ ! -f /usr/bin/mysql ]; then
        ln -s /home/mysql/mysqlbase/mysql-8.4.4/bin/mysql /usr/bin/mysql
    fi
}

function MYSQL_LOG() {
    MYSQL_LOG=("/home/mysql/mysqllog/error_log" "/home/mysql/mysqllog/mybinlog")
    for j in "${MYSQL_LOG[@]}"; do
        if [ ! -d "${j}" ]; then
            mkdir -p "${j}"
        fi
    done
    touch /home/mysql/mysqllog/error_log/error.log
    touch /home/mysql/mysqllog/mysql-slow.log
    chown -R mysql:mysql /home/mysql/mysqllog
}

function MYSQL_START() {
    /etc/init.d/mysqld start
    sleep 5
    if [ "$?" != "0" ]; then
        echo "MySQL Service Running Is Error."
        exit 1
    else
        echo "MySQL Service Running Is Successful."
    fi
}

function main() {
    MySQL_User
    Create_DIR
    DOWNLOAD_MYSQL
    INSTALL
    MYSQL_LOG
    MYSQL_START
}

main